eth的交易本就是离线签名的,无论主币交易或代币交易或合约交易
交易过程中,只有获取nonce和广播交易时,需要连网上链
支持签名及交易的SDK
Java:web3j
js: web3js
无论是哪种SDK,交易的过程都是如下四个步骤
1.创建交易
eth主币交易主参数
nonce:获取fromAddress的nonce值,web3j中有现成的方法
交易费:gasPrice+gasLimit
目的地址:toAddress
交易金额:单位转化为wei
erc20交易主参数
nonce:获取fromAddress的nonce值,web3j中有现成的方法
交易费:gasPrice+gasLimit
目的地址:合约地址
执行的合约方法(web3j事先创建好要调用的合约的方法对象)
2.获取credentials私钥证书
3.调用离线签名方法,参数= 交易+credentials
4.广播签名信息上链
总结两点:
1.nonce是做一切交易必须要传递的,每交易一次+1,保障交易的唯一性,防止签名被重复交易,导致fromAddress损失
2.eth交易和erc20交易的差别是创建交易部分,其他步骤都是一样的
eth交易的交易对象主参数:nonce+交易费+toAddress+金额
erc20交易的交易对象主参数:nonce+交易费+合约地址+执行的函数对象
3.erc20转账只是合约交易中的某一函数的调用,合约中的其他函数调用,和erc20交易是类似的,只是执行的合约函数不同,要变通