Skip to content

Commit 4345fa5

Browse files
committed
make eventlog support chainsql address
1 parent 5b801be commit 4345fa5

4 files changed

Lines changed: 37 additions & 31 deletions

File tree

solidity-example/solidity-example.sol

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
pragma solidity ^0.4.4;
22

33
contract test {
4-
event multiplylog(uint number, uint result);
4+
event multiplylog(address sender, uint indexed number, uint result);
55
//event memChangelog(uint mem);
66
uint mem;
77

8-
function test() payable {}
8+
constructor () public payable {}
99

10-
function multiply(uint a) returns(uint d){
10+
function multiply(uint a) public returns(uint d){
1111
uint result = a * 7;
12-
multiplylog(a, result);
12+
emit multiplylog(msg.sender, a, result);
1313
return result;
1414
}
1515

16-
function setMem(uint newMem){
16+
function setMem(uint newMem) public {
1717
mem = newMem;
1818
//memChangelog(mem);
1919
}
20-
function getMem() returns(uint){
20+
function getMem() public view returns(uint){
2121
return mem;
2222
}
2323

24-
//合约给用户转账,指定amount
24+
//合约给用户转账,指定amount
2525
function transferToUser(address to,uint amount) public payable {
2626
to.transfer(amount);
2727
}
28-
// 合约给用户转账,使用msg.value
28+
// 合约给用户转账,使用msg.value
2929
function userTransferUser(address to) public payable {
3030
to.transfer(msg.value);
3131
}
@@ -35,17 +35,11 @@ contract test {
3535
function getMsgSender() public view returns(address, uint){
3636
return (msg.sender,6);
3737
}
38-
39-
function return2int() public pure returns(uint,uint){
40-
uint a1 = 256;
41-
uint a2 = 56;
42-
return (a1, a2);
43-
}
4438

45-
function returnString() returns(string){
39+
function returnString() public returns(string){
4640
//string public str1;
4741
//return str1;
48-
return "stringTest1foralongStringMorethan32Byte41";
42+
return "stringTest1foralongStringMorethan32Byte41";
4943
}
5044

5145
function returnMixType() returns(uint, string){

src/eventManager.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ EventManager.prototype.subscribeTx = function(id, cb) {
3434
if (!that.onMessage) {
3535
_onMessage(that);
3636
that.onMessage = true;
37-
};
37+
}
3838
var promise = that.connect.request(messageTx);
3939
that.cache[id] = cb;
4040
return promise;
@@ -100,7 +100,7 @@ function _onMessage(that, contractObj = undefined) {
100100
if (data.type === 'table') {
101101
key = data.tablename + data.owner;
102102
_onChainsqlMessage(that,key,data,data.owner,data.tablename);
103-
};
103+
}
104104
if (data.type === 'singleTransaction') {
105105
key = data.transaction.hash;
106106
if (that.cache[key]) {
@@ -109,11 +109,13 @@ function _onMessage(that, contractObj = undefined) {
109109
delete that.cache[key];
110110
}
111111
}
112-
};
112+
}
113113
}
114114
else if(data.type === "contract_event" && contractObj !== undefined){
115115
if(data.hasOwnProperty("ContractEventTopics")){
116-
data.ContractEventTopics[0] = "0x" + data.ContractEventTopics[0].toLowerCase();
116+
data.ContractEventTopics.map(function(topic,index){
117+
data.ContractEventTopics[index] = "0x" + data.ContractEventTopics[index].toLowerCase();
118+
});
117119
}
118120
if(data.hasOwnProperty("ContractEventInfo")){
119121
data.ContractEventInfo = "0x" + data.ContractEventInfo;

src/smartContract.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,17 @@ Contract.prototype._decodeEventABI = function (currentEvent, data) {
295295

296296
result.returnValues = abi.decodeLog(event.inputs, data.data, argTopics);
297297
delete result.returnValues.__length__;
298+
if(_.isArray(event.inputs)){
299+
event.inputs.map(function (input, index) {
300+
if(input.type === "address"){
301+
result.returnValues[index] = encodeChainsqlAddr(result.returnValues[index].slice(2));
302+
result.returnValues[input.name] = result.returnValues[index];
303+
}
304+
});
305+
}
306+
else{
307+
//not array,what todo?
308+
}
298309

299310
// add name
300311
result.event = event.name;

test/smartContractTest.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ const RootUser = {
77
secret: "xnoPBzXtMeMyMHUVTgbuqAfg1SUTb",
88
address: "zHb9CJAWyB4zj91VRWn96DkukG4bwdtyTh"
99
};
10-
const abi = '[{"constant":false,"inputs":[],"name":"getMsgSender","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"sendToUser","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"transferToContract","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferToUser","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"userTransferUser","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]';
11-
const deployBytecode = "0x608060405261020d806100136000396000f3006080604052600436106100775763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166312cccb34811461007957806338c182ee146100815780635f7807a4146100985780637a6ce2e1146100af578063e8b3891e146100e7578063f8b2cb4f146100fb575b005b61007761012e565b610077600160a060020a0360043516602435610130565b610077600160a060020a0360043516602435610159565b3480156100bb57600080fd5b506100c4610194565b60408051600160a060020a03909316835260208301919091528051918290030190f35b610077600160a060020a036004351661019b565b34801561010757600080fd5b5061011c600160a060020a03600435166101d4565b60408051918252519081900360200190f35b565b604051600160a060020a0383169082156108fc029083906000818181858888f150505050505050565b604051600160a060020a0383169082156108fc029083906000818181858888f1935050505015801561018f573d6000803e3d6000fd5b505050565b3360069091565b604051600160a060020a038216903480156108fc02916000818181858888f193505050501580156101d0573d6000803e3d6000fd5b5050565b600160a060020a031631905600a165627a7a7230582098632f348441cf6c39b52534db0544177a0ebc4ac0841e20714463cf573092db0029";
12-
const contractAddr = "zGJU58xX4fTLyqqnNiNWhAMDdmXVvk68qi";
10+
const abi = '[{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferToUser","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"returnMixType","outputs":[{"name":"","type":"uint256"},{"name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMem","type":"uint256"}],"name":"setMem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"returnString","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMsgSender","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getTxOrigin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"multiply","outputs":[{"name":"d","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"userTransferUser","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getMem","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":true,"name":"number","type":"uint256"},{"indexed":false,"name":"result","type":"uint256"}],"name":"multiplylog","type":"event"}]';
11+
const deployBytecode = "0x608060405261047a806100136000396000f3006080604052600436106100a35763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416635f7807a481146100a8578063645c9ac8146100c15780636606873b146101555780636cf433471461016d5780637a6ce2e1146101f7578063b8077e281461022f578063c6888fa114610260578063e8b3891e1461028a578063f05913081461029e578063f8b2cb4f146102b3575b600080fd5b6100bf600160a060020a03600435166024356102d4565b005b3480156100cd57600080fd5b506100d661030f565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610119578181015183820152602001610101565b50505050905090810190601f1680156101465780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561016157600080fd5b506100bf600435610349565b34801561017957600080fd5b5061018261034e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101bc5781810151838201526020016101a4565b50505050905090810190601f1680156101e95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020357600080fd5b5061020c6103ad565b60408051600160a060020a03909316835260208301919091528051918290030190f35b34801561023b57600080fd5b506102446103b4565b60408051600160a060020a039092168252519081900360200190f35b34801561026c57600080fd5b506102786004356103b8565b60408051918252519081900360200190f35b6100bf600160a060020a0360043516610402565b3480156102aa57600080fd5b5061027861043b565b3480156102bf57600080fd5b50610278600160a060020a0360043516610441565b604051600160a060020a0383169082156108fc029083906000818181858888f1935050505015801561030a573d6000803e3d6000fd5b505050565b60408051808201909152601b81527f737472696e675465737432666f724d69785479706552657475726e0000000000602082015261029a91565b600055565b60408051606081018252602981527f737472696e675465737431666f72616c6f6e67537472696e674d6f726574686160208201527f6e333242797465343100000000000000000000000000000000000000000000009181019190915290565b3360069091565b3290565b6040805133815260078302602082018190528251600093919285927f414b7ab3d46ecc8ab359636c133f9a1b88ffc8c08e9560da2b3ef7949edf8ca392918290030190a292915050565b604051600160a060020a038216903480156108fc02916000818181858888f19350505050158015610437573d6000803e3d6000fd5b5050565b60005490565b600160a060020a031631905600a165627a7a72305820292c8e19759d12d784b429499256b484148f2225e99672fac48daef181c9fa250029";
12+
const contractAddr = "zffPph792Rp3z1QgvYkz9ptdkHAoLxUAQH";
1313

1414
main();
1515

@@ -33,17 +33,16 @@ async function main(){
3333
function callContract(){
3434
const myContract = chainsql.contract(JSON.parse(abi), contractAddr);
3535

36-
// myContract.events.memChangelog({
37-
// filter: {member:15}
38-
// }, (err, res) => {
39-
// console.log(err);
40-
// console.log(res);
41-
// });
36+
myContract.events.multiplylog({
37+
filter: {member:15}
38+
}, (err, res) => {
39+
console.log(err);
40+
console.log(res);
41+
});
4242

4343
/*methods.function.submit*/
44-
myContract.methods.userTransferUser("zU8gAWTXZgLmaF1XVR8briCdnWXJsT8njM").submit({
44+
myContract.methods.multiply(6).submit({
4545
Gas: 500000,
46-
ContractValue: "1111111",
4746
expect: "validate_success"
4847
}, (err, result) => {
4948
console.log(err);

0 commit comments

Comments
 (0)