# SDK相关概念梳理 **Published by:** [talentbuilder.eth](https://paragraph.com/@talentbuilder/) **Published on:** 2021-12-17 **URL:** https://paragraph.com/@talentbuilder/sdk ## Content 一、什么是SDK SDK是用来帮一个产品或平台开发应用程序的工具集,包括API、开发文档、类库、编程示例、开发工具和开发组件等。 区块链SDK是指开发区块链DAPP应用的工具集,包括编程接口(API)、开发文档、开发组件、类库、编程示例、开发编译工具、调试工具以及打包及部署工具。 二、各平台SDK梳理 2.1 以太坊 (1)编程接口:web3,通过该接口可以与以太坊节点进行交互,目前包括javascript实现(web3.js)、java实现(web3j)、python(web3.py)以及php实现。其原理都是通过编程语言将请求转化成JSON RPC,调用以太坊节点功能(例如调用智能合约)。 **(2)文档:**上述各种接口的实现都有对应的开发文档和示例代码。 **(3)智能合约编程:**编程语言,一般是solidity语言 **(4)智能合约编程工具:**使用remix,这是一个网页端编写solidity的地方,可以编程、编译合约代码,编译成EVM可识别的二进制代码以及ABI文件(相当于智能合约的说明,DAPP可以通过它知道合约提供了什么功能)。 **(5)智能合约编译:**除了remix可以编译合约外,另一种方法就是安装solc,命令行编译solidity,生成EVM可识别和执行的二进制代码,同时会生成ABI文件。 **(6)智能合约部署工具:**一种方法是使用web3方式写程序部署,另一种方法是直接通过geth客户端或钱包部署(本质上部署合约其实就是发起一次交易)。 所以综上以太坊DAPP本质就是开发的应用通过集成web3,使用web3接口调用以太坊功能或以太坊智能合约,从而使用以太坊区块链的功能。 2.2 EOSIO **(1)编程接口:**EOSIO提供了与结点交互的RPC API接口,实现包括Curl、nodejs、ruby、javascript以及python方式,具体可以参考文档。 **(2)文档:**上述接口都有对应的文档以及示例代码。 **(3)智能合约编程:**编程语言C/C++,有智能合约开发文档。 **(4)编程工具:**一般文本编辑器或者C/C++开发工具都行。 **(5)智能合约编译:**需要安装CDT(EOSIO Contract Development Toolkit,即EOSIO智能合约开发工具集),该工具可以将智能合约的C/C++代码编译成WASM文件并生成ABI文件。 **(6)智能合约部署工具:**使用cleos(本地EOS客户端安装应该就带有),通过命令行方式部署编译后的智能合约代码到EOS结点中。 其实本质和以太坊一样,也是开发应用(web端、移动端或者其它端),通过集成各种语言的RPC API,调用EOS节点功能或合约。 2.3 波场 **(1)编程接口:**tron-web,类似以太坊的web3.js,通过javascript接口与结点交互,这里是文档地址(可以切换中文版)。社区有一些PHP和Python的实现,但是比较简单。 **(2)文档:**有中文版,看这里。 **(3)智能合约编程:**solidity **(4)编程工具:**remix或者Tron-Studio。官网文档推荐使用remix编写合约代码,但是编译生成ABI和二进制代码推荐使用SimpleWebCompiler,Tron-Studio则直接提供了合约编写和编译的功能。 **(5)智能合约编译:**官方文档推荐使用SimpleWebCompiler。 **(6)智能合约部署工具:**安装Wallet-CLI,可以在其上向主网部署合约。 目前看到波场的DAPP基本都是用nodejs开发的,基于tron-web的,基本和以太坊和EOS一样,应用通过API与主网交互,调用节点功能,执行智能合约 其它说明: 上边没有提到以太坊开发智能合约的Truffle工具,Chrome插件MetaMask以及iaas服务infura,波场对应的也提供了相应的工具,分别是tron-box,tronLink和tron-grid,这些内容之后再仔细研究下。 RPC是指远程过程调用,可以理解为调用远端的功能,JSON RPC是指通过JSON这种数据格式来调用。 三、基本流程说明 开发DAPP时,开发者开发的应用在调用区块链功能时,一般需集成相应平台的开发包(例如以太坊的web3),程序中调用的开发包接口会调用以太坊网络节点的功能或执行合约。下面是一个简单的框图:DAPP调用SDK示意上面的大框是DAPP,里面集成了区块链API,可以通过API访问主网功能或者节点中部署的合约。 四、研发SDK理解 研发SDK可能主要包含以下几大块: (1)提供开发者编程接口,开发者使用这些接口可以方便地调用区块链网络功能 (2)提供接口文档和示例,方便开发者学a习 (3)智能合约开发、调试、测试、编译和部署工具 (4)本地测试环境,可以是为开发者提供的可测试的网络、或者可以自行搭建私链节点(便于本地调试),这部分内容还需要再讨论 (5)其它易用的开发插件(例如MetaMask) ## Publication Information - [talentbuilder.eth](https://paragraph.com/@talentbuilder/): Publication homepage - [All Posts](https://paragraph.com/@talentbuilder/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@talentbuilder): Subscribe to updates