主页 > imtoken钱包ios下载链接 > 以太坊智能合约编写示例

以太坊智能合约编写示例

imtoken钱包ios下载链接 2023-04-24 07:26:35

顺序

本文主要介绍智能合约的工作原理和部署过程。

合约部署流程

一般来说,部署智能合约的步骤是1:

启动以太坊节点(例如 geth 或 testrpc)。

使用 solc 编译智能合约。 = 获取二进制代码。

将编译好的合约部署到网络上。 (这一步会消耗以太币,需要使用默认地址或者你节点指定的地址来签署合约。) = 获取合约的区块链地址和ABI(合约接口的JSON表示,包括变量、事件和可调用方法). (译:作者在这里把ABI和合约接口搞混了,ABI是合约接口的二进制表示。)

使用 web3.js 提供的 JavaScript API 调用合约。 (根据调用类型,可能会消耗以太坊。)

以太坊私有链共识机制_以太坊私有链案例_以太坊 布署 公有链

下图展示了部署过程:

以太坊 布署 公有链_以太坊私有链案例_以太坊私有链共识机制

你的 DApp 可以为用户提供一个接口,让用户在使用它之前部署所需的合约(如步骤 1 到 4 所示),或者你可以假设合约已经部署(通用方法)并直接开始使用合约的接口(如图所示在步骤 6) 中。

智能合约实例

接下来以太坊私有链案例,我们将使用geth的控制台开发一个简单的智能合约,编译并部署到私有链上,最后与之交互。 完成这些之后,我们可以对智能合约的运行机制有更深入的了解。 本示例将王晓明关于以太坊开发的演示视频与关于以太坊项目交易和合同的 wiki 相结合。

打开测试网的控制台

输入以下命令:

geth-data dir ' ~/ethdev '-dev console 2 geth .log

以太坊私有链案例_以太坊 布署 公有链_以太坊私有链共识机制

显示如下:

zcc @Ubuntu : ~ $ geth-datadir ' ~/ethdev ' -dev console 2 geth .log

欢迎使用 Geth JavaScript 控制台!

实例:Geth/v 1.4.18-stable/linux/go1.6.2

coinbase : 0 XB 005804 a 49 e 73 ACB 17 D1 e 7645 DFD 0 a 33 DDE 6 eb0 e

位于:Block 217(2016 年 11 月 1 日,星期二 05:21:38 PT)

数据目录:/home/zcc/ethdev

模块:admin:1.0 debug:1.0 et H3 33601.0 miner:1.0 net:1.0 personal:1.0 RPC 33601.0 shh 33601.0 txpool 33601.0 web:1.0

以太坊 布署 公有链_以太坊私有链共识机制_以太坊私有链案例

至此,我们打开测试网络的控制台,如果没有特别说明,后面的步骤都是在控制台中完成的。

检查编译器

我们的下一个智能合约示例是使用实体语言开发的。 因此,在此之前以太坊私有链案例,我们应该确保已正确安装 solidity 编译器。 输入以下命令进行检查:

eth.getcompiler()

['坚固']

我们发现solidity的编译器安装正确。 如果返回值为空数组,则输入以下命令进行安装:

sudo add-apt-repository PPA:ether eum/ether eum

sudo apt-get 更新

以太坊私有链共识机制_以太坊私有链案例_以太坊 布署 公有链

sudo apt-get 安装 solc

如果在输入命令时返回错误,请尝试重新启动系统。

编写智能合约

我们写一个函数来求解乘以7的结果,就是输入一个值a,返回值a*7。

source=' 合约测试 { function multiply(uint a) returns(uint d){ return a * 7; }}'

合同测试{函数乘法(uint a)返回(uint d){返回a * 7; }}'

2个

以太坊私有链案例_以太坊 布署 公有链_以太坊私有链共识机制

编译智能合约

contract=eth.compile.solidity(source).test

{

代码: '0x 6060606040526038806010600396000 f 3606060405260 e 060020 a 6000350463 c 6888 fa 18114601 c 575 b 6002565 b 36025760760435026040404040404050505051918251515 c 575 b 60256025 b 3576006007600404504

信息: {

遵循定义:[{

常量:假,

输入:[.],

名称:'倍数',