区块链 之 部署和调用以太坊智能合约

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

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

                       

区块链 之 部署和调用以太坊智能合约

 

作者:邹祁峰
  邮箱: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

完成编译后, 编译结果将会

NVIDIA NCCLNVIDIA Collective Communications Library)是一种用于高性能并行计算的库,特别适用于多GPU系统中的并行通信操作。如果你想学习NCCL源码,我可以给你一些建议: 1. 先了解基本概念:在开始研究NCCL源码之前,确保你对并行计算和通信操作有基本的了解。理解NCCL的设计目标和背后的原理会有助于你更好地理解源码。 2. 寻找源码NCCL源码可以在NVIDIA的开源GitHub存储库中找到。你可以在https://github.com/NVIDIA/nccl 上找到最新的代码。 3. 阅读文档:NVIDIA提供了NCCL的官方文档,其中包含了详细的API文档和使用指南。在阅读源码之前,先浏览一遍文档,了解库的功能和使用方式,这将有助于你更好地理解源码中的细节。 4. 逐步阅读源码:开始时,可以选择从简单的功能开始阅读,逐步深入到更复杂的部分。从整体架构入手,了解主要的数据结构和函数调用关系。然后,选择一个具体的功能或算法,深入研究相关的源代码。 5. 调试和实践:通过在实际应用中使用NCCL库,你可以更好地理解源码。尝试使用NCCL库进行一些简单的通信操作,并通过调试器进行源码跟踪,观察库的行为和内部工作原理。 6. 参考资料和社区支持:除了官方文档和源码,你还可以参考一些相关的学术论文、博客文章和社区讨论,这些资源可以帮助你更好地理解NCCL的设计和实现。 希望这些建议对你学习NCCL源码有所帮助!如果你有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值