Skip to content

Instantly share code, notes, and snippets.

@sogoiii
sogoiii / metacoin.js
Last active March 22, 2017 23:28
Truffle 3.0 tests in async await
var MetaCoin = artifacts.require("./MetaCoin.sol");
contract('MetaCoin', function(accounts) {
it("should put 10000 MetaCoin in the first account", async function() {
let meta = await MetaCoin.deployed();
let balance = await meta.getBalance.call(accounts[0]);
assert.equal(balance.valueOf(), 10000, "10000 wasn't in teh first account")
});
@sogoiii
sogoiii / Verifier.sol
Last active December 26, 2023 22:53
A Solidity contract that verifies signatures
pragma solidity ^0.4.8;
contract Verifier {
function recoverAddr(bytes32 msgHash, uint8 v, bytes32 r, bytes32 s) returns (address) {
return ecrecover(msgHash, v, r, s);
}
function isSigned(address _addr, bytes32 msgHash, uint8 v, bytes32 r, bytes32 s) returns (bool) {
return ecrecover(msgHash, v, r, s) == _addr;
}
}
@sogoiii
sogoiii / genSignature.js
Created June 9, 2017 05:55
Create Ethereum Signatures
const Web3 = require('web3')
const provider = new Web3.providers.HttpProvider('http://localhost:8545')
const web3 = new Web3(provider)
function toHex(str) {
var hex = ''
for(var i=0;i<str.length;i++) {
hex += ''+str.charCodeAt(i).toString(16)
}
return hex
@sogoiii
sogoiii / eth_sign_RPC.sh
Created June 9, 2017 05:58
Call the Ethereum RPC api with curl
curl -X POST localhost:8545 --data '{
"jsonrpc":"2.0",
"method": "eth_sign",
"params":["0x2fb5949a6a1dc03b6d59d4723bc913230a155d0d", "0x0564b25c8fcd6766f672d43252c8ee2597ad6c7a35315cf13e3b4d00bafc2e9f"],
"id":1
}'
@sogoiii
sogoiii / extract_signature_params_snippet.js
Created June 9, 2017 06:04
Given a signature, extract the r, s, and v values.
signature = signature.substr(2); //remove 0x
const r = '0x' + signature.slice(0, 64)
const s = '0x' + signature.slice(64, 128)
const v = '0x' + signature.slice(128, 130)
const v_decimal = web3.toDecimal(v)
@sogoiii
sogoiii / verify_signature.js
Last active December 26, 2023 22:52
Validate a signature in javascript using solidity
//...
const SignVerifyArtifact = require('./contracts/SignAndVerifyExample')
const SignVerify = contract(SignVerifyArtifact)
SignVerify.setProvider(provider)
//...
SignVerify
.deployed()
.then(instance => {
let fixed_msg = `\x19Ethereum Signed Message:\n${msg.length}${msg}`
let fixed_msg_sha = web3.sha3(fixed_msg)
@sogoiii
sogoiii / compareSimpleTest.js
Created June 30, 2017 18:53
Comparing simple truffle test as promise chain or async/await
const status = () => {
return MetaCoin.deployed()
.then(instance => {
return instance.getBalance.call(accounts[0]);
})
.then(balance => {
assert.equal(balance.valueOf(), 10000, "10000 wasn't in the first account");
})
}
@sogoiii
sogoiii / asyncIsPromise.js
Created June 30, 2017 18:55
Async returns a promise
const operationOne = function async (data) {
let step1 = await somePromise(data)
let step2 = await anotherPromise(step1)
return step2.data
}
actionOne()
.then(operationOne)
.then(data => {
//more work
})
@sogoiii
sogoiii / turfffle_test_snippet_1.js
Created June 30, 2017 18:56
Default truffle test snippet
var MetaCoin = artifacts.require("./MetaCoin.sol");
// ... more code
contract('MetaCoin', function(accounts) {
it("should put 10000 MetaCoin in the first account", async function() {
let meta = await MetaCoin.deployed();
let balance = await meta.getBalance.call(accounts[0]);
assert.equal(balance.valueOf(), 10000, "10000 wasn't in the first account")
});
// ... more code
@sogoiii
sogoiii / turfffle_test_snippet_2.js
Last active August 10, 2017 23:10
Truffle test snippet 2
it("should fail because function does not exist on contract", async function () {
let meta = await MetaCoin.deployed();
try {
await meta.someNonExistentFn.call();
} catch (e) {
return true;
}
throw new Error("I should never see this!")
})