对于智能合约来说,大家应该都有所了解吧,至少也听说过吧?
当然,智能合约、以太坊、以太币这些关键词也会在国内普遍的流行起来,这是国际的趋势所在。
什么是以太坊?
以太坊是一个平台,有开源代码,相当于操作系统,如android,代码开源,你可以在这个平台上开发智能合约。由于得到很多人共识并且认可这个模式,很多人就购买服务器(矿机)运行这个以太坊代码,矿机运行代码就是挖矿(处理交易和验证交易),每一个矿机都是一个节点,节点之间有通信验证,并且任意一个节点失败或诈骗都会认为交易无效,做到去中心化,所有公共节点组成的叫做公链。
什么是以太币?
在以太坊中所有运行代码(如交易或验证或存储等)都需要消耗能量,相当于现实世界中的货币,在以太坊中就是以太币。有人又问,在以太坊中不是可以发行自己的token(dai币)嘛,是不是自己发行一个代币,就可以无限使用公链的算力资源呢。答案就是:no。在以太坊这个系统中,所有需要消耗算力的交易都需要支付以太币。
正是因为很多人相信以太币对社会有很大的价值,所以以太币有人们心目中的价格,这就出现了交易所。
什么是智能合约?
前提:SSHSecureShellClient安装:(CentOs-6.5 Linux安装,这里注意jdk也是Linux版本的,而不是Windows版本,否则会报错),安装配置好SSHSecureShellClient和CentOs后就可以来进行web3j的调用了,这里还需要下载web3j的相关压缩包点击打开链接(第四个就可以)。
随每个版本一起提供web3j fat jar,提供命令行工具。命令行允许您使用终端中web3j的一些功能:
这些工具提供:
命令行工具可以从项目存储库的发布页面,下载部分下获取zipfile / tarball ,或者通过HomeBrew获取OS X用户 ,或者通过AUR获取Arch linux用户 。
brew tap web3j/web3j
brew install web3j
当我们把web3j的压缩包下载后,就可以用SSH执行命令,直接进入web3j的目录里(在SSH中直接导入jdk1.8和web3j解压后的文件夹,1.8以下的jdk可能会报错,所以需要安装1.8的jdk,并将原来的jdk1.6或者1.7卸载掉即可)。
上面的两行命令在SSH中执行如下:
./brew tap web3j/web3j
./brew install web3j
要通过zipfile运行,只需解压缩zip文件并运行二进制文件:
$ unzip web3j-<version>.zip
creating: web3j-3.0.0/lib/
inflating: web3j-3.0.0/lib/core-1.0.2-all.jar
creating: web3j-3.0.0/bin/
inflating: web3j-3.0.0/bin/web3j
inflating: web3j-3.0.0/bin/web3j.bat
$ ./web3j-<version>/bin/web3j
_ _____ _ _
| | |____ (_) (_)
__ _____| |__ / /_ _ ___
\ \ /\ / / _ \ '_ \ \ \ | | | / _ \
\ V V / __/ |_) |.___/ / | _ | || (_) |
\_/\_/ \___|_.__/ \____/| |(_)|_| \___/
_/ |
|__/
Usage: web3j version|wallet|solidity ...
我们可以直接找到web3j的文件夹的bin,执行如下命令即可显示上面的内容:
./web3j
接下来就是钱包的创建和交易了:
要生成新的以太坊钱包:
$ web3j wallet create
要更新现有钱包的密码:
$ web3j wallet update <walletfile>
要将以太网发送到另一个地址:
$ web3j wallet send <walletfile> 0x<address>|<ensName>
上面的命令在SSH中请忽略$直接用./代替执行,如下:
./web3j wallet send <walletfile> 0x<address>|<ensName>
下面提供一下需要的相关参数:
创建钱包后会提示你输入密码、URL(http://192.168.0....类型)
我的钱包地址:0xb25c9F9BEEe12D10BCB58Dcf5ab2d09f1e6c47d3
对方的钱包地址:3ee2d520fc7a1e532309f00455b27118f9864155(这里是你自己创建的钱包地址)
在向对方进行交易的时候,我们要去修改一下生成的.json文件名,因为生成的文件名过长,不利于命令的输入:
./web3j wallet send ks/sgf.json 0xb25c9F9BEEe12D10BCB58Dcf5ab2d09f1e6c47d3
上面的ks是我自己创建的文件夹来存放我的sgf.json文件的,0xb25c9F9BEEe12D10BCB58Dcf5ab2d09f1e6c47d3则是我要打币的对象。
修改文件名命令(把这个很长的):
mv UTC--2018-07-03T09-01-16.927000000Z--3ee2d520fc7a1e532309f00455b27118f9864155.json sgf.json
将Ether发送到另一个地址时,在交易发生之前会向您询问一系列问题。请参阅下面的完整示例
以下示例演示如何使用web3j将Ether发送到另一个钱包。
根据下面的数据我们可以看到:
输入的数量可以是0.000001的小数,货币单位则是ether、wei等,它们都有自己的换算值。
$ ./web3j-<version>/bin/web3j wallet send <walletfile> 0x<address>|<ensName>
_ _____ _ _
| | |____ (_) (_)
__ _____| |__ / /_ _ ___
\ \ /\ / / _ \ '_ \ \ \ | | | / _ \
\ V V / __/ |_) |.___/ / | _ | || (_) |
\_/\_/ \___|_.__/ \____/| |(_)|_| \___/
_/ |
|__/
Please enter your existing wallet file password:
Wallet for address 0x19e03255f667bdfd50a32722df860b1eeaf4d635 loaded
Please confirm address of running Ethereum client you wish to send the transfer request to [http://localhost:8545/]:
Connected successfully to client: Geth/v1.4.18-stable-c72f5459/darwin/go1.7.3
What amound would you like to transfer (please enter a numeric value): 0.000001
Please specify the unit (ether, wei, ...) [ether]:
Please confim that you wish to transfer 0.000001 ether (1000000000000 wei) to address 0x9c98e381edc5fe1ac514935f3cc3edaa764cf004
Please type 'yes' to proceed: yes
Commencing transfer (this may take a few minutes)...................................................................................................................$
Funds have been successfully transferred from 0x19e03255f667bdfd50a32722df860b1eeaf4d635 to 0x9c98e381edc5fe1ac514935f3cc3edaa764cf004
Transaction hash: 0xb00afc5c2bb92a76d03e17bd3a0175b80609e877cb124c02d19000d529390530
Mined block number: 1849039
请参阅Solidity smart contract wrappers 点击打开链接
好了,就先写到这里了,希望对大家有所帮助。