Bouncer contract implementation (#883)

* feat: implement bouncer contracts

* fix: rename Bouncer to SignatureBouncer
This commit is contained in:
Matt Condon
2018-04-17 11:36:24 -03:00
committed by GitHub
parent 0926729c8f
commit 6a7114fdb4
8 changed files with 322 additions and 29 deletions

22
test/helpers/sign.js Normal file
View File

@ -0,0 +1,22 @@
import utils from 'ethereumjs-util';
/**
* Hash and add same prefix to the hash that ganache use.
* @param {string} message the plaintext/ascii/original message
* @return {string} the hash of the message, prefixed, and then hashed again
*/
export const hashMessage = (message) => {
const messageHex = Buffer.from(utils.sha3(message).toString('hex'), 'hex');
const prefix = utils.toBuffer('\u0019Ethereum Signed Message:\n' + messageHex.length.toString());
return utils.bufferToHex(utils.sha3(Buffer.concat([prefix, messageHex])));
};
// signs message using web3 (auto-applies prefix)
export const signMessage = (signer, message = '', options = {}) => {
return web3.eth.sign(signer, web3.sha3(message, options));
};
// signs hex string using web3 (auto-applies prefix)
export const signHex = (signer, message = '') => {
return signMessage(signer, message, { encoding: 'hex' });
};