区块链 之 部署和调用以太坊智能合约
作者:邹祁峰
邮箱:Qifeng.zou.job@hotmail.com
博客:http://blog.csdn.net/qifengzou
日期:2018.03.04 01:18
转载请注明来自”祁峰”的CSDN博客
1 引言
智能合约就像我们业务的后台逻辑, 其运行在以太坊平台上. 以太坊就像操作系统, 其天然的提供了区块链的特性. 绝大多数开发人员只需关注使用Solidity编写智能合约实现业务逻辑, 而无需去修改以太坊的特性. 因此, 此文中将重点讲述如何在以太坊上部署和调用智能合约.
为方便大家理解智能合约和以太坊之间的关系,可以用一下几个概念做类比.
| 序号 | 通用概念 | 以太坊 |
|---|---|---|
| 01 | 操作系统 | 以太坊 |
| 02 | C/C++/Java/Go | Solidity |
| 03 | 类+函数 | 智能合约 |
2 智能合约
为了让大家对智能合约的编写/部署/调用有一个全面的了解.以下将以一个实例串联整个过程.
2.1 编写智能合约
智能合约的编写,编译以及部署可以通过网页版Remix,也可通过本地truffle框架进行操作.以下以truffle框架下进行操作.[注:truffle的使用请自查资料]
新建Adoption.sol文件:
# mkdir pet-adopt// 新建项目目录
# truffle init// 初始化truffle框架, 将会自动生成如下目录结构
# tree// 查看目录结构
.
├── contracts // 智能合约存放目录
│ └── Migrations.sol
├── migrations // 智能合约部署脚本
│ └── 1_initial_migration.js
├── test
└── truffle-config.js
进入智能合约存放目录contracts,并创建智能合约Adoption.sol文件,输入如下内容:
pragma solidity ^0.4.17;contract Adoption { address[16] public adopters; // 保存领养者的地址 // 领养宠物 function adopt(uint petId) public returns (uint) { require(petId >= 0 && petId <= 15); // 确保id在数组长度内 adopters[petId] = msg.sender; // 保存调用这地址 return petId; } // 返回领养者 function getAdopters() public view returns (address[16]) { return adopters; }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
2.2 编译智能合约
完成智能合约的编辑后,则需编译智能合约.在项目根目录输入如下指令:
# truffle compile// 编译智能合约
Compiling ./contracts/Adoption.sol…
Compiling ./contracts/Migrations.sol…
Writing artifacts to ./build/contracts
# tree// 查看目录结构
.
├── build
│ └── contracts
│ ├── Adoption.json // 编译结果
│ └── Migrations.json
├── contracts
│ ├── Adoption.sol
│ └── Migrations.sol
├── migrations
│ └── 1_initial_migration.js
├── test
└── truffle-config.js
完成编译后, 编译结果将会

本文详细介绍了如何在以太坊上部署和调用智能合约,包括使用Truffle框架编写、编译智能合约,启动以太坊私链,部署智能合约,以及通过ABI和地址调用智能合约的方法。通过实例展示了从编写合约到成功调用的完整流程。
最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



