本指南将深入探讨调用合约,交易,事件,过滤器和主题。
测试合约
以下智能合约是上一指南中multiply
合约的更新版本:
contract test {
int _multiplier;
event Multiplied(int indexed a, address indexed sender, int result );
function test(int multiplier) {
_multiplier = multiplier;
}
function multiply(int a) returns (int r) {
r = a * _multiplier;
Multiplied(a, msg.sender, r);
return r;
}
}
智能合约现在是一个Multiplied
事件。该事件将在日志中存储原始参数包括a
,sender
的地址和结果result
。参数a
和sender
的地址都被编入索引,因此我们可以使用主题topic
为这两个创建特定的过滤器filter
。
部署合约
我们可以按如下方式部署合约:
var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c";
var password = "password";
var abi = @"[{
'constant':false,'inputs':[{
'name':'a','type':'int256'}],'name':'multiply','outputs':[{
'name':'r','type':'int256'}],'type':'function'},{
'inputs':[{