在学习如何使用web3.js包时,我遇到了两种类型的事务:
RawTransaction/web3.eth.sendawTransaction(.)和
我知道,为了创建一个原始事务,您创建了transaction对象,并为每个键设置了一个十六进制值。我不明白的是:
(1)你为什么要把所有的值都表示为十六进制?(例如gasLimit、gasPrice、nonce等)
2)为什么使用原始事务而不是正常事务。我发现您离线签了tx,然后简单地传递散列,但是这样做有什么意义呢?我是说你什么时候要把tx弄成原样?
如果你认为还有什么是我需要知道的,或者你能提供有帮助的资料,我会非常感激的。
干杯!
发布于 2018-02-24 21:11:21
(1)你为什么要把所有的值都表示为十六进制?
因为对于原始事务,您必须以用于签名的格式准备原始数据。这是在使用sendTransaction时隐藏的东西。
你可以在这两篇文章中看到这两篇文章的不同之处:
2)为什么使用原始事务而不是普通事务?
如果您有一个本地可访问的节点,则可以使用sendTransaction,因为您的帐户是在节点中管理的。但是对于这样的情况,您没有自己的节点,而是使用第三方节点将您的事务依赖于网络。由于您不想向这些节点显示您的私钥,所以您必须在本地(例如,在浏览器的客户端的JavaScript中)以原始格式准备和签署事务,然后在(不一定是值得信任的)委托节点上调用sendRawTransaction。
https://ethereum.stackexchange.com/questions/40808
复制相似问题