(三)以太坊——在以太坊私有链上部署第一个智能合约

本文详细介绍了如何在以太坊私有链上部署和运行智能合约。首先,通过实例展示了如何编写一个简单的名为SimpleStorage的智能合约,然后逐步指导读者进行合约部署,包括启动挖矿和等待区块确认。最后,演示了如何在本节点和其他节点运行智能合约,强调了智能合约地址和接口的重要性。通过这个过程,读者可以理解区块链智能合约的部署与运行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、编写示例智能合约

智能合约:

它是一段代码和数据的集合,可以部署以太坊网络上运行。类似于Java程序,Java程序通过Java虚拟机(JVM)将代码解释字节进行执行,以太坊的智能合约通过以太坊虚拟机(EVM)解释成字节码进行执行。同时智能合约有自己的账户,在时间或事件的驱动下能自动执行一些功能,如可以在相互之间传递信息,修改区块链的状态比如账户信息等。以太坊的智能合约是图灵完备,就是可以完全模拟一台计算机所能做的所有事情,比特币不是图灵完备,比如循环指令比特币就无法执行。

1.编写名称为SimpleStorage的智能合约
pragma solidity ^0.4.18;
contract SimpleStorage { //智能合约名称
uint storedData;
function set(uint x)public { //定义了一个set方法
storedData= x;
 }
function get() public constant returns (uint) {
return storedData;  //定义了一个get方法
}
}

二、部署智能合约

1.按照下方图片操作,进入智能合约部署页面

在这里插入图片描述

2.智能合约部署过程,详细如下图,完成之后点击左下角的 DEPLOY 按钮

在这里插入图片描述

3.第二步完成,将出现以下界面,输入我们选择的账户的密码,点击SEND TRANSACTION

在这里插入图片描述

4.此时geth客户端需要启动挖矿,(如果之前启动,则不需要重新启动)进行智能合约的创建,在挖出12个块后,智能合约就创建完成了

在这里插入图片描述

三、运行智能合约

经过上述的操作,我们已经完成了一个智能合约的部署过程,接下来我们看看如何运行智能合约。

(一)在本节点运行智能合约
1. 下图中为已部署的智能合约

在这里插入图片描述

2.点击智能合约,进入智能合约的,试验刚才部署的智能合约,按照第二张图片的操作,进行试验

在这里插入图片描述
在这里插入图片描述

其他的智能合约部署与运行与上述一致,无非就是函数较多,参数多。

(二)在其他节点运行智能合约

如果在其他节点运行智能合约,我们就需要将智能合约的地址和接口复制下来,在其他节点上进行相应的操作,详细如下:

1.需要在智能合约上进行复制内容

在这里插入图片描述

按照以下操作:

在这里插入图片描述

2.将前边复制的内容按照图片所示粘贴,完成后,就可以发现这个智能合约在该节点运行了

在这里插入图片描述

四、总结

今天我们完成了在以太坊私有链上部署和运行第一个智能合约,这个是官方给的一个示例,我们通过该例子,了解了区块链智能合约的部署运行过程,之后,将深入的学习如何自己编写智能合约。

如果需要了解部署智能合约的工作原理,可以参考以下文章:

https://blog.csdn.net/sportshark/article/details/52249607

### 如何在本地环境部署私有区块链 #### 使用Geth部署以太坊私有链 为了建立一个用于开发和测试的私有以太坊区块链,可以利用Geth工具来启动自定义网络。这允许开发者创建智能合约,在不消耗真实货币的情况下模拟交易过程。 安装完成后,通过指定创世文件参数`--datadir`以及提供JSON格式的创世纪块配置,可初始化一个新的数据目录[^1]: ```shell geth --datadir ./privateChain init genesis.json ``` 接着,使用相同的`--datadir`选项启动节点服务,并附加控制台以便后续操作: ```shell geth --datadir ./privateChain console ``` 此时可以在JavaScript控制台上执行命令查询当前状态或管理账户余额等动作[^2]: ```javascript // 查询区块高度 eth.blockNumber // 获取第一个账号余额(转换成ether显示) web3.fromWei(eth.getBalance(eth.accounts[0]), 'ether') ``` #### 利用Truffle框架简化DApp开发流程 对于希望专注于应用逻辑而非底层实现细节的应用程序开发者来说,采用像Truffle这样的高级开发平台可能是更好的选择。这类工具提供了项目模板、编译器集成等功能支持快速迭代原型设计。 首先按照官方文档指导完成必要的软件包安装之后,就可以着手准备新的工作空间了[^3]: ```shell mkdir my-blockchain-project && cd $_ truffle init ``` 此后的步骤涉及编辑配置文件(`truffle-config.js`)指明目标网络连接详情,编写Solidity源码描述业务规则,最后借助内置的任务自动化机制一键发布至所选平台上。 #### Go语言环境下的Go-Ethereum客户端构建 如果倾向于更深入理解整个系统的运作原理,则可以从零开始动手实践基于Go语言版本的Ethereum协议栈——go-ethereum (简称geth) 的搭建方法[^4]。 先确保已妥善设置了相关依赖项及其路径映射关系: ```shell export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin source ~/.bashrc ``` 随后依照官方指南获取最新稳定版发行包并解压到合适位置,依据个人需求调整各项参数后即可投入实际运行当中去了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Janson666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值