ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
(1)w3.eth.sendTransaction()仅支持发送*未签名的*交易。为了使用它,您的节点必须管理您的私钥。由于节点必须管理您的密钥,因此您不能将其与托管节点一起使用。 (2)w3.eth.sendRawTransaction()要求该交易已经签名并序列化。因此,它需要使用额外的序列化步骤,但使您能够在托管节点上广播事务。当然,还有其他原因可能需要使用本地密钥。所有这些都需要使用sendRawTransaction()。 (3)`sendTransaction`的方法,通过`分析源码`,可以发现`sendTransaction`内部其实会帮助我们根据我们传参的`from`字段到节点的`accountManager`账号管理器中获取`from`的密钥,来帮我们进行数据签名,所以,`sendTransaction`一般不会用于远程调用,而用于本地调用,因为只有在本地启动节点的时候,才能配置我们解锁的钱包 ~~~ 交易签名需要账户已经解锁 signed = account.signTransaction(payload) ~~~