主页 > imtoken国内下载 > 通过控制台部署智能合约

通过控制台部署智能合约

imtoken国内下载 2023-09-28 05:07:04

除了使用图形界面的以太坊钱包,用户还可以通过Web.js Javascript API在控制台命令行部署和调用智能合约。

首先需要安装go-ethereum客户端,这里不再赘述。 下面介绍一下在我的mac电脑上部署和调用智能合约的步骤。

1)首先打开一个命令行窗口(称为Terminal 1,因为后面需要再建一个窗口),运行命令geth --testnet打开测试网络,如图:

以太坊智能合约原理_以太坊智能合约部署_以太坊智能合约的众筹

开放测试网

2)然后再打开一个命令行窗口(Terminal 2)以太坊智能合约部署,执行geth attach命令打开Javascript控制台。 通过这个控制台,可以使用web3方法和geth自带的管理API来调用部署好的智能合约。 但是请注意,我们需要打开测试网的控制台,所以需要指定geth attach命令的访问位置,如图:

以太坊智能合约原理_以太坊智能合约部署_以太坊智能合约的众筹

以太坊智能合约原理_以太坊智能合约部署_以太坊智能合约的众筹

打开测试网的JS控制台

3)在2号终端执行personal.listAccounts查询现有账户,发现没有账户,于是自己创建一个,执行personal.newAccount('随意写一个私钥'),如图:

以太坊智能合约原理_以太坊智能合约部署_以太坊智能合约的众筹

创建账户

4)在终端2,使用web3.eth.getBalance()查询新建账户(addr1)中的余额,发现为0,于是开始挖矿miner.start(),如图:

以太坊智能合约原理_以太坊智能合约部署_以太坊智能合约的众筹

以太坊智能合约原理_以太坊智能合约部署_以太坊智能合约的众筹

开始挖矿

5)同时在1号终端,以太坊节点会生成挖矿所需要的数据,你会看到Generating DAG的进度以太坊智能合约部署,完成后会开始挖矿,可以看到小锤子图标:

以太坊智能合约原理_以太坊智能合约部署_以太坊智能合约的众筹

开始挖矿

6)过一会,在2号终端查看余额,发现wei中有一串天文数字,1wei等于10^-18个ether。 然后就可以停止挖矿了。

以太坊智能合约原理_以太坊智能合约部署_以太坊智能合约的众筹

以太坊智能合约的众筹_以太坊智能合约原理_以太坊智能合约部署

停止挖矿

7) 编写一个简单的智能合约代码,比如下面的商品评分智能合约:

合同评级{

函数 setRating (bytes32 _key, uint256 _value) {

/* 用特定的数字给产品打分 */

评分[_key] = _value;

以太坊智能合约的众筹_以太坊智能合约部署_以太坊智能合约原理

}

/* 显示特定项目的分数 */

映射(bytes32 => uint256)公共评级;

}

将这段代码放入Solidity语言的在线编译器进行编译(也可以用solc编译,这里暂时只介绍在线编译器编译)。

以太坊智能合约原理_以太坊智能合约部署_以太坊智能合约的众筹

以太坊智能合约原理_以太坊智能合约部署_以太坊智能合约的众筹

Solidity 在线编译器

8)将Web3 deploy菜单(上图红圈)下的所有内容复制到2号终端的控制台(可能需要开户,即unlockAccount,输入私钥),开始挖矿。 经过一段时间的确认,控制台如果“Contract mined!” 显示,合约创建成功,返回本次交易的合约地址和哈希值。

以太坊智能合约原理_以太坊智能合约部署_以太坊智能合约的众筹

合约创建成功

9) 在控制台窗口中,可以使用合约名和函数名来调用合约。 假设要给item 1打3分,可以调用合约名的setRating函数(参见Web3 deploy菜单下的内容),需要使用合约对象的sendTransaction()方法发起一个交易。 而评级合约key ratings数组可以用来展示1号商品的评级。

以太坊智能合约原理_以太坊智能合约部署_以太坊智能合约的众筹

调用合约

至此,一个简单的智能合约的部署和调用就完成了。 多于。