使用web3j进行交易转账

区块链技术Butterfly2018-02-06 19:35:55  阅读 -评论 3  阅读原文

目 录

1 Web3j概述

2 区块链基础

2.1 交易

3 实战经验

3.1 创建项目

3.2 导入依赖关系

3.3 连接以太坊客户端

3.4 使用admin连接以太坊客户端

3.5 解锁账号

3.6 获取交易手续费

3.7 创建交易事务

3.8 获取gas和balance

3.9 发送交易

3.10 验证交易

4 总结

1 Web3j概述

用于与Ethereum客户端集成的轻量级Java库。

2 区块链基础

对于编程者来说,区块链不是一个很难理解的概念,因为最难懂的部分(包括挖矿,哈希,椭圆加密,P2P网络)都只是提供了一系列的特性和约束,一旦你知道了这些特性和约束,就不必去理解这些特性或是约束背后的实现原理。

2.1 交易

区块链是全局共享,交易数据库。这就意味着任何人只要参与到这个网络中就可以访问到这个数据库。如果要修改数据库中的数据,就需要创建一个被其他所有在这个网络里的人所认可的交易。交易说明对数据的修改要么没有任何进行,要么就全部完成,不会出现部分完成,部分未完成的情况。而且一旦交易完成,被记录在数据库中,谁也无法修改这个交易。

举个例子,想象在一个电子货币里,用表列举出所有账号余额,当进行一个账号和另外一个账号进行交易时,交易数据库要确保交易金额要从交易发送方减去,并且在交易接收方增加同样的交易金额。如果交易过程中出现了任何原因导致交易失败,交易发送方增加金额的行为失败,那接收方的金额也不应该发生变化。

而且发送方都会对发起的交易进行签名加密。这直接地保证了数据库只能被指定的修改所修改。在电子货币的例子中,简单的检查能够确保只有持有这个账号的秘钥者才能对金额进行转移。

3 实战经验

3.1 创建项目

这里创建的是spring boot项目,因为spring boot方便管理,当然你也可以创建普通的maven项目。

3.2 导入依赖关系

主要有几个依赖:

1. 加密解密

2. 快速的JSON序列化和反序列化

3. http的网络连接

4. web3j的依赖

5. spring boot的依赖

3.3 连接以太坊客户端

这样是使用web3j最原始的连接方法,可以打印版本号和以太坊的信息,如果要创建交易,可以使用Admin来进行连接。

3.4 使用admin连接以太坊客户端

Admin admin =Admin.build(new HttpService());

3.5 解锁账号

//解锁账号

PersonalUnlockAccount personalUnlockAccount = admin.personalUnlockAccount(fromAccountId, password,ACCOUNT_UNLOCK_DURATION).

sendAsync().get(5, TimeUnit.MINUTES);

发送交易之前必须先解锁账号,否则可能会发生账号被锁定的情况而无法发生交易,解锁需要输入自己的密码,并且设置时间。

3.6 获取交易手续费

当一个事务发生在Ethereum时,必须向执行事务的客户端支付事务成本,将此事务的输出提交给Ethereum区块链。gas price 和gasLimit影响交易的速度这些参数一起决定了您愿意花费在交易成本上的最大数量的乙醚。即可以花费不超过天然气价格*天然气限制。天然气价格也会影响交易发生的速度,这取决于其他交易对于矿工而言是否有利可图的天然气价格。您可能需要调整这些参数以确保交易及时进行。

交易的gas limit 一定要等于或者大于交易使用的intrinsic gas, intrinsic gas包括:

* 1. 执行交易预订费用为21,000gas.

* 2. 随交易发送的数据的gas费用(每字节数据或代码为0的费用为4gas,每个非零字节的数据或代码费用为68gas)。

* 3. 如果是合约创建交易,还需要额外的32,000gas 目前区块的gas limit是 4,712,357 gas,数据来自于ethstats.net.

* 这表示着大约224笔转账交易(gas limit为21000)可以被塞进一个区块(区块时间大约在15-20秒间波动)。

* 这个协议允许每个区块的矿工调整区块gas limit,任意加减1/2024(0.0976%)。

Nonce

为了防止交易的重播攻击,每笔交易必须有一个nonce随机数,针对每一个账户nonce都是从0开始,当nonce为0的交易处理完之后,才会处理nonce为1的交易,并依次加1的交易才会被处理。以下是nonce使用的几条规则:

  • 当nonce太小,交易会被直接拒绝;
  • 当nonce太大,交易会一直处于队列之中。

3.7 创建交易事务

为了纪念第一次交易,我们把hello eth 作为标记打入到ETH里面。ETH要求打印的标记必须是16进制,而且以0x开头,这里我们使用Numeric类的方法把我们的标记打入进去。

为了纪念第一次交易我们把hello eth 作为标记打入到ETH里面。ETH要求打印的标记必须是16进制,而且以0x开头,这里我们使用Numeric类的方法把我们的标记打入进去。

3.8 获取gas和balance

3.9 发送交易

这里采用的是异步发送交易的方式,tradeHash可以获取我们交易返回的Hash码,最后我们需要根据Hash码找到我们的数据。

3.10 验证交易

EthTransactionethTransaction=admin.ethGetTransactionByHash(tradeHash).send();

org.web3j.protocol.core.methods.response.Transaction transactionResult = ethTransaction.getResult();

System.out.println(transactionResult.getValue());

transactionResult里面是我们返回的数据,可以查看到blockHash,gas,nonce等信息,我们取出input,这是我们的输入参数,然后把16进制转码为10进制就可以看到我们的hello eth.

4 总结

通过web3j 交易接口的调用我们对eth的交易步骤和交易所需要的条件都已经有所了解,这个对于我们以后开发钱包和发送离线交易都有所帮助。


HPB芯链

立即加入我们的电报群:https://t.me/hpbfans

最新资讯将在群内同步实时更新!芯链团队正在等待你的到来!

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们100@7234.cn

参与讨论 (3 人参与讨论)

相关推荐

区块链电子发票来啦

区块链电子发票来啦

3月18日,全国首张轨道交通区块链电子发票在深圳地铁福田站开出,标志着深圳市地铁乘车码正式上线区块链电子发票功能。截至18日20时17分,用户通过乘车码开具区块链电子发票数量已突破一万张。区块链电子发票是按照国家税务总局的工作部署,深圳市税务局承接试点,腾讯区块链提供底层技术,是一种应用"区块链+发票"生态体系的新型电子发票。整个开票流程无需纸质发票,无需专业设备、交易即可开票,打破时间、地点限制

王斯妮:重温两会热点:区块链是打造智慧城市的重要元素

王斯妮:重温两会热点:区块链是打造智慧城市的重要元素

王斯妮:重温两会热点:区块链是打造智慧城市的重要元素 随着区块链技术的普及和发展,越来越多的区块链技术和区块链企业,被媒体广泛报道,被普通大众所熟知,这也让区块链技术得到了政府的高度重视。 今年两会期间,区块链+医疗,区块链+大数据,区块链+供应链金融,区块链+保险,区块链+智慧城市等众多区块链+模式的应用在两会代表们的提案中频频出现和被提及,显然,"区块链"一词已成为两会的热议话题之一。接下来让

比特币凯撒成功投资的核心方法

比特币凯撒成功投资的核心方法

作者简介:比特币凯撒,新浪微博10w+博主;《凯撒相对论》创始人,专注于区块链投资,曾经投资过量子链,BNB,沃尔顿和库币等,获得百倍收益,几经沉浮,依然活跃币圈潮流当中。新浪微博:比特币凯撒;微信:Vinessell 1:周期趋势判断 周期 ,是理财投资活动中最为关键的考量因素,是必须学习、研究、掌握、遵循的理念和现实,可惜却总是被忽略。实际上却是最为基础、最为关键的知识点。不深入了

曾经我离财务自由仅一步之遥,如今咫尺天涯

曾经我离财务自由仅一步之遥,如今咫尺天涯

公元2018注定是载入史册特殊的年份。不仅仅对于币圈来说是非常重要转折点,整个世界的格局和形态毫不夸张是一个承上启下的作用,目前来看还不清楚是好的影响还是坏的影响,个人当然希望是好的影响,毕竟个人在历史发展趋势中,碰到上行趋势的情况下,个人财富的积累基本是呈指数级增长,大可参考中国改革开发40年来早就了多少富翁管中窥豹,许多隐形富翁甚至拒绝上中国胡润百富榜,贫富差距比你想象中更加巨大。回顾2017

震惊!为了防止比特币丢失,居然做出这种极端的事!

震惊!为了防止比特币丢失,居然做出这种极端的事!

为了钱,总是有人愿意去冒险,去做一些令人惊讶的事,哪怕是与生命相关,但是,为了钱,他们却认为值得。据SEC社交电商链估测:总计200万-300万枚的比特币永久性丢失,比特币总量为2100万个,丢失约占总量的12%-18%。还有报道称比特币永久性丢失的数据是400万个。比特币的丢失是不可逆的。比特币的存放与法币不一样,主要牵扯到三个数据:钱包地址、公钥和私钥。这三个数据都是一个长串的乱码字符,不同的

诈骗中国人70亿的海外区块链项目正在大暴雷,而你还在买买买!

诈骗中国人70亿的海外区块链项目正在大暴雷,而你还在买买买!

原创: Never SECblock 文/NeverSEC社交电商链-这是一篇稍长的文章,如果你不愿意被海外那些聚光灯下光鲜亮丽的项目骗钱,你就认真看一看Never这篇。我将近期发生的三件大案梳理了一遍,把那些骗子头目的外衣扒了个精光。你会发现,那些所谓牛×的大佬,也不过如此,他比你多的只是一颗嗜血的心。-1以色列Moshe Hogeg与Stox案1CO资金大转移2019年1月24日,以色列金融

区块链投资趋势报告:巨头入场布局行业趋于成熟

区块链投资趋势报告:巨头入场布局行业趋于成熟

来自:https://mp.weixin.qq.com/s?__biz=MzI4NzIxOTY1NA==&mid=2650632639&idx=1&sn=e6d1c29731d992a80410aaee82ec3ea6&chksm=f3d8db16c4af520097e4a64a71b1d4743ac326b9f027

重新发明货币

重新发明货币

一、货币的演化过程 先简单回顾一下人类货币的演化过程,大概有以下阶段: a. 1.0版本:自然货币(贝壳、牲口、金银……) 这个阶段,货币基于一般等价物的稀有性或者实用性,货币不可能出现人为操纵的超发。 b. 2.0版本:早期纸币、银票到本位纸币 当贸易量越来越大,实物货币太不方便了,而且大家发现其实并不在意货币本身有什么价值,在意的只是这么多的货币能不能交换到足够的物品,于是纸币这种信用货

麦妖榜
更新日期 2019-03-21
排名用户贡献值
1BitettFan23752
2等待的宿命23696
3六叶树20309
4天下无双16192
5区块大康15902
6lizhen00214889
7让时间淡忘14256
8linjm122712327
9冷风大q11188
10momo11174
返回顶部 ↑