想对一个数字进行哈希(在python中),然后使用solidity智能合约重新创建哈希,然后对该数字进行一些有用的操作。
目的是对数据进行签名并传递签名,然后使用ecrecover对其进行检查以验证数据。
hash一个字符串,并将其传递到合同中:
contract HashChecker {
event LogI(int256);
event LogA(address);
event LogB(bytes32);
event LogS(string);
function HashChecker() {
}
function check_hash(string mystring, bytes32 expected_result_hash) {
bytes32 result_hash = sha3(mystring);
LogB(result_hash);
LogB(expected_result_hash);
}
}
测试的python代码:
from ethereum import tester
from sha3 import sha3_256
code1 = open('hash_checker_string.sol').read()
c1 = tester.state().abi_contract(code1, language='solidity')
print "Passing a string produces the sha3 I expect but I'm left with a string"
mystring = "foo"
c1.check_hash(
"foo",
sha3_256(mystring).hexd