位置: IT常识 - 正文
推荐整理分享关于web3.js中与交易发送、交易签名、智能合约函数调用相关api的理解(关于javascript),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:web3.js文档,web3js approve,关于javascript,关于javascript,web3.0举例,web3js approve,web3js,web3js approve,内容如对您有帮助,希望把文章链接给更多的朋友!
web3.js中有一些与交易发送、签名、合约函数调用相关的api,初学者(如me)常常搞不清什么情况下应该调用哪个,以及它们之间的区别。现将个人浅见记录如下,备忘。
sendTransactionweb3.eth.sendTransaction(transactionObject [, callback])
transactionObject对象设置交易的各种参数(不包括签名r,s,v),签名过程由api根据from地址自动完成。
sendSignedTransactionweb3.eth.sendSignedTransaction(signedTransactionData [, callback])发送已签名的交易,交易签名可以通过 web3.eth.accounts.signTransaction 生成。
signTransactionweb3.eth.signTransaction(transactionObject, address [, callback])签名交易,由address指定对应的账户进行签名。
signweb3.eth.sign(dataToSign, address [, callback])使用指定账户对数据进行签名
callweb3.eth.call(callObject [, defaultBlock] [, callback])执行一个消息调用交易,消息调用交易直接在节点旳 VM 中而不需要通过区块链挖矿来执行。
callObject交易对象的data属性包含合约函数调用数据的 ABI 字节字符串 ,对合约创建交易来说,其值为合约初始化代码。
new contractnew web3.eth.Contract(jsonInterface[, address][, options])生成合约实例,若不设置address参数,则部署新的合约实例到网络中。
methods.myMethod.callmyContract.methods.myMethod([param1[, param2[, ...]]]).call(options[, callback])将在不发送交易的情况下调用该“常量”方法并在 EVM 中执行其智能合约方法。注意此种调用方式无法改变智能合约状态。
methods.myMethod.sendmyContract.methods.myMethod([param1[, param2[, ...]]]).send(options[, callback])向合约发送交易来执行其方法。注意这会改变合约状态。
methods.myMethod.encodeABImyContract.methods.myMethod([param1[, param2[, ...]]]).encodeABI()为指定的合约方法进行 ABI 编码,可用于发送交易、调用方法或向另一个合约方法传递参数。
signTransactionweb3.eth.accounts.signTransaction(tx, privateKey [, callback]);使用给定的私钥签名以太坊交易。
signweb3.eth.accounts.sign(data, privateKey);签名任意数据。注意,此函数与web3.eth.sign(dataToSign, address [, callback])的区别,后者只需要通过地址来指定由谁来签名,api内部必定可以获取其私钥。
上述函数具体用法请参照对应版本web3.js的文档说明,如:web3.eth.accounts — web3.js 中文文档 — 登链社区https://learnblockchain.cn/docs/web3.js/web3-eth-accounts.html#sign
注:理论上,所有发起交易的函数都必须有私钥进行签名操作。但上述某些函数只需指定公钥地址就能完成该功能,原因是web3.js所连接的providers为指定的公钥地址保存了对应的私钥,在后台可以自动完成签名动作,当然这种情形多见于使用ganache等测试环境中。正常情况下(如在Dapp中)需要web3.js连接用户的私钥钱包,签名动作由用户手动确认完成。
补充:web3.js会在底层将函数调用转为json-rpc的请求,其中不用创建交易的使用eth_call,创建交易的使用eth_sendTransaction,若需要在本地签名然后发送交易则使用eth_sendRawTransaction
上一篇:McWCECfg.exe是什么进程 McWCECfg进程查询(mc office是什么意思)
下一篇:Linux 学习笔记——五、文件与目录(linux入门学习)
友情链接: 武汉网站建设