EOSIO.CDT用于构建EOSIO合约的开发工具包

EOSIO.CDT(Contract Development Toolkit即合约开发工具包)是一套用于构建EOSIO合约的工具。目前的版本是1.6.1。

cdt是一个用于WebAssembly(wasm)的工具链,也是一组用于帮助eosio平台编写合约的工具。除了作为一个通用的Webassembly工具链,eosio特定的优化还可以支持构建eosio智能合约。这个新的工具链是围绕clang7构建的,这意味着eosio.cdt拥有当前最可用的LLVM优化和分析,但是由于WASM目标仍然被认为是实验性的,因此一些优化不可用或不完整。

重要

eosio.cdt版本1.3.x引入了相当多的突破性变化。为了获得二进制版本,我们需要从eosio.cdt中删除核心符号的概念。这意味着符号、资产和与其相关的其他类型、函数发生了巨大的变化。由于这些变更将具有破坏性,我们决定为将来的合约撰写添加尽可能多的破坏性变更,以便中断只发生一次。请阅读本自述文件1.2.x版和1.3.x版之间的区别。

Binary Releases

eosio.cdt目前支持Mac OS X BREW、Linux x86_64 Debian软件包和Linux x86_64 RPM软件包。

如果你以前安装过eosio.cdt,请在下载和使用二进制版本之前运行卸载脚本(位于克隆eosio.cdt的目录中)。

Mac OS X Brew 安装:

1
2
$ brew tap eosio/eosio.cdt
$ brew install eosio.cdt

Mac OS X Brew 卸载:

1
$ brew remove eosio.cdt

Debian Package 安装:

1
2
$ wget https://github.com/eosio/eosio.cdt/releases/download/v1.6.1/eosio.cdt_1.6.1-1_amd64.deb
$ sudo apt install ./eosio.cdt_1.6.1-1_amd64.deb

Debian Package 卸载:

1
$ sudo apt remove eosio.cdt

Fedora RPM Package 安装:

1
2
$ wget https://github.com/eosio/eosio.cdt/releases/download/v1.6.1/eosio.cdt-1.6.1-1.fedora-x86_64.rpm
$ sudo yum install ./eosio.cdt-1.6.1-1.fedora-x86_64.rpm

Fedora RPM Package 卸载:

1
$ sudo yum remove eosio.cdt

Centos RPM Package 安装:

1
2
$ wget https://github.com/eosio/eosio.cdt/releases/download/v1.6.1/eosio.cdt-1.6.1-1.centos-x86_64.rpm
$ sudo yum install ./eosio.cdt-1.6.1-1.centos-x86_64.rpm

Centos RPM Package 卸载:

1
$ sudo yum remove eosio.cdt

Building安装(从零开始):

1
2
3
4
$ git clone --recursive https://github.com/eosio/eosio.cdt
$ cd eosio.cdt
$ ./build.sh
$ sudo ./install.sh

安装的Tools

  • eosio-cpp
  • eosio-cc
  • eosio-ld
  • eosio-init
  • eosio-abidiff
  • eosio-wasm2wast
  • eosio-wast2wasm
  • eosio-ranlib
  • eosio-ar
  • eosio-objdump
  • eosio-readelf

demo

如何构建:

  • CD到build目录
  • 运行命令cmake….
  • 运行make命令

生成后:

  • 构建的智能合约位于build目录中的hello目录下。
  • 然后可以使用cleos执行set contract操作,并指向./build/hello目录。

应在./src目录中的cmakelists.txt中添加cmake,而不应在上级目录中的cmakelists.txt添加。

CMakeLists.txt:

1
2
3
4
5
6
7
8
project(hello)

set(EOSIO_WASM_OLD_BEHAVIOR "Off")
find_package(eosio.cdt)

add_contract( hello hello hello.cpp )
target_include_directories( hello PUBLIC ${CMAKE_SOURCE_DIR}/../include )
target_ricardian_directory( hello ${CMAKE_SOURCE_DIR}/../ricardian )

源代码:

1
2
3
4
5
6
7
8
9
#include <hello.hpp>
ACTION hello::hi( name nm ) {
print_f("Name : %\n", nm);
}

ACTION hello::check( name nm ) {
print_f("Name : %\n", nm);
eosio::check(nm == "hello"_n, "check name not equal to `hello`");
}

======================================================================

分享一些比特币、以太坊、EOS等区块链相关的交互式在线编程实战教程:

  • EOS入门教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • 深入浅出玩转EOS钱包开发,本课程以手机EOS钱包的完整开发过程为主线,深入学习EOS区块链应用开发,课程内容即涵盖账户、计算资源、智能合约、动作与交易等EOS区块链的核心概念,同时也讲解如何使用eosjs和eosjs-ecc开发包访问EOS区块链,以及如何在React前端应用中集成对EOS区块链的支持。课程内容深入浅出,非常适合前端工程师深入学习EOS区块链应用开发。
  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • c#比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在C#代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是C#工程师不可多得的比特币开发学习课程。
  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • ERC721以太坊通证实战,课程以一个数字艺术品创作与分享DApp的实战开发为主线,深入讲解以太坊非同质化通证的概念、标准与开发方案。内容包含ERC-721标准的自主实现,讲解OpenZeppelin合约代码库二次开发,实战项目采用Truffle,IPFS,实现了通证以及去中心化的通证交易所。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • Hyperledger Fabric 区块链开发详解,本课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、通道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、nodejs链码与应用开发的操作实践,是Nodejs工程师学习Fabric区块链开发的最佳选择。
  • Hyperledger Fabric java 区块链开发详解,课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、频道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、java链码与应用开发的操作实践,是java工程师学习Fabric区块链开发的最佳选择。
  • tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是EOSIO.CDT用于构建EOSIO合约的工具包