以太坊钱包转账源码
Ⅰ imtoken冷钱包转账显示长度错误
imtoken冷钱包转账显示长度错误,可能是区块链拥堵造成的。
解决方案:
第1步:热钱包:点击“导入钱包”->选择“以太坊钱包”->选择第四项“观察钱包”->点击右上角的扫描按钮,扫描第2步钱包地址的二维码;
第2步:冷钱包:选择你想观察的钱包地址;
第3步:热钱包:接着第1步操作,扫描未联网手机的地址二维码->点击“下一步”->生成“授权签名”的二维码;
第4步:冷钱包:使用imToken内的“扫一扫”功能,在底部选择“导入钱包”选项,扫描第3步中热钱包生成的二维码->下一步->输入密码->生成“授权签名”的二维码;
第5步:热钱包:点击第3步”授权签名”页面中的“下一步”按钮->点击“扫描授权钱包页面的二维码,导入签名”->扫描第4步中“授权成功”的二维码->点击“确定”->即可完成授权。
小知识:
1.未联网的手机成为冷钱包,里边是包含私钥信息的,所以一定要细心保管,做好冷钱包的钱包备份。
2.冷钱包一定不要联网。
3.观察钱包在没有冷钱包的离线签名情况下,是无法进行转账交易的。
Ⅱ 【ETH钱包开发03】web3j转账ETH
在之前的文章中,讲解了创建、导出、导入钱包。
【ETH钱包开发01】创建、导出钱包
【ETH钱包开发02】导入钱包
本文主要讲解以太坊转账相关的一些知识。交易分为ETH转账和ERC-20 Token转账,本篇先讲一下ETH转账。
1、解锁账户发起交易。钱包keyStore文件保存在geth节点上,用户发起交易需要解锁账户,适用于中心化的交易所。
2、钱包文件离线签名发起交易。钱包keyStore文件保存在本地,用户使用密码+keystore的方式做离线交易签名来发起交易,适用于dapp,比如钱包。
本文主要讲一下第二种方式,也就是钱包离线签名转账的方式。
交易流程
1、通过keystore加载转账所需的凭证Credentials
2、创建一笔交易RawTransaction
3、使用Credentials对象对交易签名
4、发起交易
注意以下几点:
1、Credentials
这里,我是通过获取私钥的方式来加载 Credentials
还有另外一种方式,通过密码+钱包文件keystore方式来加载 Credentials
2、nonce
nonce是指发起交易的账户下的交易笔数,每一个账户nonce都是从0开始,当nonce为0的交易处理完之后,才会处理nonce为1的交易,并依次加1的交易才会被处理。
可以通过 eth_gettransactioncount 获取nonce
3、gasPrice和gasLimit
交易手续费由gasPrice 和gasLimit来决定,实际花费的交易手续费是 gasUsed * gasPrice 。所有这两个值你可以自定义,也可以使用系统参数获取当前两个值
关于 gas ,你可以参考我之前的一篇文章。
以太坊(ETH)GAS详解
gasPrice和gasLimit影响的是转账的速度,如果gas过低,矿工会最后才打包你的交易。在app中,通常给定一个默认值,并且允许用户自己选择手续费。
如果不需要自定义的话,还有一种方式来获取。获取以太坊网络最新一笔交易的 gasPrice ,转账的话, gasLimit 一般设置为21000就可以了。
Web3j还提供另外一种简单的方式来转账以太币,这种方式的好处是不需要管理nonce,不需要设置gasPrice和gasLimit,会自动获取最新一笔交易的gasPrice,gasLimit 为21000(转账一般设置成这个值就够用了)。
这个问题,我想是很多朋友所关心的吧。但是到目前为止,我还没有看到有讲解这方面的博客。
之前问过一些朋友,他们说可以通过区块号、区块哈希来判断,也可以通过Receipt日志来判断。但是经过我的一番尝试,只有 BlockHash 是可行的,在web3j中根据 blocknumber 和 transactionReceipt 都会报空指针异常。
原因大致是这样的:在发起一笔交易之后,会返回 txHash ,然后我们可以根据这个 txHash 去查询这笔交易相关的信息。但是刚发起交易的时候,由于手续费问题或者以太网络拥堵问题,会导致你的这笔交易还没有被矿工打包进区块,因此一开始是查不到的,通常需要几十秒甚至更长的时间才能获取到结果。我目前的解决方案是轮询的去刷 BlockHash ,一开始的时候 BlockHash 的值为0x00000000000,等到打包成功的时候就不再是0了。
这里我使用的是rxjava的方式去轮询刷的,5s刷新一次。
正常情况下,几十秒内就可以获取到区块信息了。
区块确认数=当前区块高度-交易被打包时的区块高度。
Ⅲ 【ETH钱包开发04】web3j转账ERC-20 Token
在上一篇文章中讲解了ETH转账,这一篇讲一下ERC-20 Token转账。
【ETH钱包开发03】web3j转账ETH
1、直接用web3j的API
2、java/Android调用合约的 transfer 方法
不管用哪种方式来转账,你都需要先写一个solidity智能合约文件来创建ERC-20 Token,然后部署合约,最后才是通过客户端来调用。
注意:erc-20 token转账和eth转账的区别如下:
1、erc-20 token创建交易对象用的是这个方法 createTransaction
2、erc-20 token需要构建 Function ,它其实对应的就是erc-20 token合约中的那些方法。它的第一个参数就是ERC20中那几个方法的名称,第二个参数的话就是对应合约方法中的参数,第三个参数是和第二个参数对应的,按照我那样就行了。转账的话就是 transfer ,我们从合约的 transfer 可以看到第一个参数是收款地址,第二个参数是金额,所以 Function 这里对应起来就好。
这种方法不需要使用web3j封装的方法,而是直接调用solidity合约的方法。
步骤
1、web3j加载一个已经部署的合约
2、验证合约是否加载成功 isValid
3、如何加载合约成功,则调用合约的 transfer 方法
注意:
1、这里的 TokenERC20 是根据solidity智能合约生成的对应的Java类,用于java/Android和智能合约交互的,如果你对这里不太清楚,不妨看看我之前的一篇文章。
以太坊Web3j命令行生成Java版本的智能合约
2、如果加载合约失败,可能的一个原因是合约对应的Java类中的 BINARY 的值不对,这个值是你部署合约成功之后的bytecode,你最好检查对比一下。
我发送一笔交易,可以通过这个地址查询
https://rinkeby.etherscan.io/tx/
Ⅳ 鱼池里的以太坊怎么样交
鱼池里的以太坊怎么交易
如果你在鱼池里的以太坊钱包里有一定的以太币,你可以在钱包里进行交易。
具体步骤如下:
1.打开以太坊钱包,进入“交易”页面。
2.点击“发送”按钮,填写交易的目标地址和转账金额等信息。
3.确认交易信息无误后,点击“发送交易”按钮。
4.系统会提示你输入钱包密码进行确认,输入密码后确认交易。
5.交易发送成功后,你可以在“交易记录”页面查看交易的状态和交易详情。
需要注意的是,在进行以太坊交易时,需要支付一定的燃气费(GasFee),这是用来支付交易手续费的。燃气费的大小取决于交易的复杂程度和网络拥堵情况等因素,燃气费越高,交易的处理速度越快。因此,如果你希望交易能够尽快得到处理,可以适当提高燃气费的金额。
Ⅳ ETH转账的2种方式的对比
web3j支持使用以太坊钱包文件(推荐)和以太网客户端管理命令来发起一笔交易。当你创建了一个拥有以太币的账户后,你可以通过以下两种交易机制,和以太坊网络(私网/公网)交易:
这里主要讲一下 线下签名交易(Offline transaction signing) 。线下签名交易允许你使用web3j提供的钱包账户发起交易,你完全控制自己的私钥,交易发送到网络上的其它节点并广播。
线下签名交易使用 RawTransaction 对象来完成,一共有如下几步:
1、通过私钥或密码+钱包文件(keystore)来加载转账凭证Credentials
2、获取发起转账账户的nonce 值,也就是第几笔交易
3、创建 RawTransaction交易 对象
4、签名 RawTransaction 对象,也就是对交易做签名
5、发送交易( RawTransaction 对象)给节点处理。
6、获取交易哈希值TxHash
以太坊实战-再谈nonce使用陷阱: https://blog.csdn.net/wo541075754/article/details/79054937
此外,还有一种简单的转账方式
这种方式,不需要自己管理nonce。
这2种方式都是离线交易,先组装交易,然后发送到链上。
参考:
https://docs.web3j.io/getting_started.html#transactions
https://www.jianshu.com/p/6650d2a3aea9
Ⅵ 浠ュお鍧婅浆璐︽庝箞鏍峰彇
浠ュお鍧婅浆璐︽庝箞鍙栨秷
鍦ㄤ互澶鍧婄綉缁滀腑锛屼竴鏃︽偍鍙戦佷簡涓绗旇浆璐︼紝灏辨棤娉曠洿鎺ュ彇娑堟垨鎾ゅ洖璇ヤ氦鏄撱傚洜涓轰互澶鍧婃槸涓涓鍘讳腑蹇冨寲鐨勫尯鍧楅摼缃戠粶锛屼氦鏄撲竴鏃﹁骞挎挱鍒扮綉缁滀笂锛屽氨浼氳鍖呭惈鍦ㄤ竴涓鍖哄潡涓骞惰璁板綍鍦ㄥ尯鍧楅摼涓婏紝杩欐剰鍛崇潃浜ゆ槗鏄涓嶅彲閫嗙殑銆
浣嗘槸锛屽傛灉鎮ㄥ彂閫佺殑浜ゆ槗灏氭湭琚纭璁わ紝鎮ㄥ彲浠ラ氳繃鍙戦佷竴涓涓庤ヤ氦鏄撶浉鍚岀殑浜ゆ槗锛屽苟浣跨敤鏇撮珮鐨勭噧姘旇垂鐢锛坓asfee锛夋潵鏇挎崲鍘熷嬩氦鏄撱傚傛灉鏂颁氦鏄撶殑鐕冩皵璐圭敤瓒冲熼珮锛岀熆宸ュ皢浼樺厛澶勭悊璇ヤ氦鏄擄紝骞朵笖鍘熷嬩氦鏄撳皢琚鍙栨秷銆傝繖涓杩囩▼琚绉颁负鈥滄浛鎹浜ゆ槗鈥濓紙Replace-by-fee,RBF锛夈
瑕佹浛鎹浠ュお鍧婁笂鐨勪氦鏄擄紝璇锋寜鐓т互涓嬫ラゆ搷浣滐細
鎵撳紑鎮ㄧ殑浠ュお鍧婇挶鍖咃紙濡侻etaMask锛夊苟杩涘叆杞璐﹀巻鍙茶板綍椤甸潰锛屾壘鍒拌佸彇娑堢殑浜ゆ槗銆
纭璁よヤ氦鏄撳皻鏈琚纭璁わ紝杩欐剰鍛崇潃璇ヤ氦鏄撶殑鐘舵佸簲璇ユ槸鈥滄湭纭璁も濇垨鈥滃緟澶勭悊鈥濄
鍒涘缓涓涓鏂扮殑浜ゆ槗锛岃ヤ氦鏄撶殑閲戦濆拰鎺ユ敹鍦板潃涓庡師濮嬩氦鏄撶浉鍚岋紝浣嗕娇鐢ㄦ洿楂樼殑鐕冩皵璐圭敤銆傛偍鍙浠ュ湪浜ゆ槗鍒涘缓椤甸潰涓婅皟鏁寸噧姘旇垂鐢锛屼互纭淇濆畠瓒冲熼珮锛屼互渚夸紭鍏堝勭悊璇ヤ氦鏄撱
绛剧讲鏂颁氦鏄撳苟骞挎挱鍒颁互澶鍧婄綉缁滀笂銆
绛夊緟鏂颁氦鏄撹鐭垮伐鎵撳寘骞剁‘璁ゃ傚傛灉鏂颁氦鏄撹纭璁わ紝鍒欏師濮嬩氦鏄撳皢琚鍙栨秷銆
璇锋敞鎰忥紝鏇挎崲浜ゆ槗闇瑕佹敮浠樻洿楂樼殑鐕冩皵璐圭敤锛屽苟涓斿苟涓嶄繚璇佷竴瀹氫細鎴愬姛銆傚傛灉鏂颁氦鏄撶殑鐕冩皵璐圭敤涓嶈冻澶熼珮锛屾垨鑰呭傛灉鐭垮伐閫夋嫨缁х画澶勭悊鍘熷嬩氦鏄擄紝鍒欏師濮嬩氦鏄撳皢缁х画琚澶勭悊锛屽苟涓旇浆璐﹀皢涓嶅彲閫嗚浆銆