web3.js_1.x.x--API(一)event/Constant/deploy/options
生活随笔
收集整理的這篇文章主要介紹了
web3.js_1.x.x--API(一)event/Constant/deploy/options
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*
事件是使用EVM日志內置功能的方便工具,在DAPP的接口中,它可以反過來調用Javascript的監聽事件的回調。事件在合約中可被繼承。當被調用時,會觸發參數存儲到交易的日志中(一種區塊鏈上的特殊數據結構)。
這些日志與合約的地址關聯,并合并到區塊鏈中,只要區塊可以訪問就一直存在
*/myContract.once(event[, options], callback) //單次訂閱合約事件
myContract.events.MyEvent([options][, callback]) //訂閱合約事件
myContract.events.allEvents([options][, callback]) //訂閱合約全部事件
myContract.getPastEvents(event[, options][, callback]) //讀取合約歷史事件
options - Object: 可選,用于部署的選項,包含以下字段:filter - Object : 可選,按索引參數過濾事件。例如 {filter: {myNumber: [12,13]}} 表示 “myNumber” 為12或13的所有事件fromBlock - Number: 可選,僅監聽該選項指定編號的塊中發生的事件topics - Array : 可選,用來手動為事件過濾器設定主題。如果設置過filter屬性和事件簽名,那么(topic[0])將不會自動設置
callback - Function: 可選,該回調函數觸發時,其第二給參數為事件對象,第一個參數為錯誤對象底層的日志接口(Low-level Interface to Logs)通過函數log0,log1,log2,log3,log4,可以直接訪問底層的日志組件。logi表示總共有帶i 1個參數log3(msg.value,0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20,msg.sender,_id);
調用:myContract.deploy(options)
參數:
options - Object: 用于部署的配置選項,包含以下字段:data - String: 合約的字節碼arguments - Array : 可選,在部署時將傳入合約的構造函數
返回值:
Object: 交易對象,包含以下字段:arguments: Array - 之前傳入方法的參數,可修改send: Function - 用來部署合約,其返回的promise對象將解析為新的合約實例,而非交易收據!estimateGas: Function - 用來估算用于部署的gas用量encodeABI: Function - 用來編碼部署的ABI數據,即合約數據 構造函數參數myContract.deploy({data: '0x12345...',arguments: [123, 'My String']
})
.send({from: '0x1234567890123456789012345678901234567891',gas: 1500000,gasPrice: '30000000000000'
}, function(error, transactionHash){ ... })
.on('error', function(error){ ... })
.on('transactionHash', function(transactionHash){ ... })
.on('receipt', function(receipt){console.log(receipt.contractAddress) // 收據中包含了新的合約地址
})
.on('confirmation', function(confirmationNumber, receipt){ ... })
.then(function(newContractInstance){console.log(newContractInstance.options.address) // 新地址的合約實例
});// data是合約自身的一個可選配置項
myContract.options.data = '0x12345...';myContract.deploy({arguments: [123, 'My String']
})
.send({from: '0x1234567890123456789012345678901234567891',gas: 1500000,gasPrice: '30000000000000'
})
.then(function(newContractInstance){console.log(newContractInstance.options.address) // instance with the new contract address
});// 編碼
myContract.deploy({data: '0x12345...',arguments: [123, 'My String']
})
.encodeABI();
> '0x12345...0000012345678765432'// 估算gas
myContract.deploy({data: '0x12345...',arguments: [123, 'My String']
})
.estimateGas(function(err, gas){console.log(gas);
});
/*
new web3.eth.Contract(jsonInterface[, address][, options])
參數:jsonInterface(abi) - Object: 要實例化的合約的json接口
address - String: 可選,要調用的合約的地址,也可以在之后使用 myContract.options.address = '0x1234..' 來指定該地址
options - Object : 可選,合約的配置對象,其中某些字段用作調用和交易的回調:from - String: 交易發送方地址gasPrice - String: 用于交易的gas價格,單位:weigas - Number: 交易可用的最大gas量,即gas limitdata - String: 合約的字節碼,部署合約時需要
*/
truffle(develop)> tokenContract.options{ address: [Getter/Setter], jsonInterface: [Getter/Setter] }
truffle(develop)> tokenContract.options.jsonInterface[1]{ constant: false,inputs:[ { name: '_from', type: 'address' },{ name: '_to', type: 'address' },{ name: '_value', type: 'uint256' } ],name: 'transferFrom',outputs: [ { name: '', type: 'bool' } ],payable: false,stateMutability: 'nonpayable',type: 'function',signature: '0x23b872dd' }
更多專業前端知識,請上 【猿2048】www.mk2048.com 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
?
更多專業前端知識,請上 【猿2048】www.mk2048.com 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的web3.js_1.x.x--API(一)event/Constant/deploy/options的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 封装cookie设置和获取的简易方法
- 下一篇: css布局笔记(二)Flex