今天给各位分享以太坊abi生成的知识,其中也会对以太坊生成器进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
在以太坊上开发应用程序以太坊abi生成的可用工具、组件、模式和平台的指南。
此列表的创建是由 ConsenSys 的产品经理推动的以太坊abi生成,他们认为需要在新的和有经验的区块链开发人员之间更好地共享工具、开发模式和组件。
开发智能合约
智能合约语言
构架
IDE
其他工具
测试区块链网络
测试以太水龙头
前端以太坊 API
后端以太坊 API
引导程序/开箱即用工具
以太坊 ABI(应用程序二进制接口)工具
以太坊客户端
贮存
Mahuta - 具有附加搜索功能的 IPFS 存储服务,以前称为 IPFS-Store
OrbitDB - IPFS 之上的去中心化数据库
JS IPFS API - IPFS HTTP API 的客户端库,用 JavaScript 实现
TEMPORAL - 易于使用的 API 到 IPFS 和其他分布式/去中心化存储协议
PINATA - 使用 IPFS 的最简单方法
消息传递
测试工具
安全工具
监控
其他杂项工具
Cheshire - CryptoKitties API 和智能合约的本地沙箱实现,可作为 Truffle Box 使用
ERCs-以太坊评论请求存储库
ERC-20 - 可替代资产的原始令牌合约
ERC-721 - 不可替代资产的令牌标准
ERC-777 - 可替代资产的改进令牌标准
ERC-918 - 可开采令牌标准
流行的智能合约库
可扩展性
支付/状态通道
等离子体
侧链
POA桥
POA 桥用户界面
POA 桥梁合同
ZK-SNARK
ZK-STARK
预构建的 UI 组件
以上内容,来自git库以太坊abi生成:
github.com/ConsenSys/ethereum-developer-tools-list
我是鱼歌,一个在深圳创业的全栈程序员,主攻区块链,元宇宙和智能合约,附加小程序和app开发。
[祈祷]

ABI全称Application Binary Interface, 是调用智能合约函数以及合约之间函数调用的消息编码格式定义,也可以理解为智能合约函数调用的接口说明. 类似Webservice里的SOAP协议一样;也就是定义操作函数签名,参数编码,返回结果编码等。
使用ABI协议时必须要求在编译时知道类型,即强类型相关.
当一个智能合约编译出来后, 他的abi接口定义就确定了. 比如下面的智能合约:
生成的字节码:
生成的abi定义:
可以看出, 生成abi包含了2个定义: 函数 lotus , 事件 Log_lotus , 各个字段含义见上. 根据该abi定义,就可以生成调用该智能合约函数的abi格式的数据了.
格式简单的可以表示为: 函数选择器+参数编码
一个函数调用的前四个字节数据指定了要调用的函数签名。计算方式是使用函数签名的 keccak256 的哈希,取4个字节。
函数名如果有多个参数使用,隔开,要去掉表达式中的所有空格。在geth客户端,通过命令可以得到hash:
由于前面的函数签名使用了四个字节,参数的数据将从第五个字节开始。
根据参数类型,编码规则有所区别:
除了bytes,和string, 其他类型的数据不足32字节长度的需要加0补足32字节. 动态长度的编码在例子中介绍.
函数: function baz(uint32 x, bool y) :
调用: baz(69, true)
生成的数据如下:
返回结果是一个bool值,在这里,返回的是false:
函数: f(uint,uint32[],bytes10,bytes)
调用: (0x123, [0x456, 0x789], "1234567890", "Hello, world!")
函数选择器: bytes4(sha3("f(uint256,uint32[],bytes10,bytes)"))
对于 固定大小的类型 值 uint256 和 bytes10 ,直接编码值。
对于 动态内容类型 值 uint32[] 和 bytes ,我们先 编码偏移值 ,偏移值是整个值编码的开始到真正存这个数据的偏移值(这里不计算头四个用于表示函数签名的字节)。
所以参数编码数据依次为:
尾部部分的第一个动态参数, [0x456, 0x789] 编码拆解如下:
最后我们来看看第二个动态参数的的编码, Hello, world! 。
所以最终结果是:
意思就是ABI1是以太坊的一种合约间调用时的一个消息格式。类似Webservice里的SOAP协议一样;也就是定义操作函数签名,参数编码,返回结果编码等。
一般来说,部署智能合约以太坊abi生成的步骤为以太坊abi生成:
1启动一个以太坊节点 (例如geth或者testrpc)。
2使用solc编译智能合约。 = 获得二进制代码。
3将编译好以太坊abi生成的合约部署到网络。(这一步会消耗以太币,还需要使用你的节点的默认地址或者指定地址来给合约签名。) = 获得合约的区块链地址和ABI(合约接口的JSON表示,包括变量,事件和可以调用的方法)。(译注以太坊abi生成:作者在这里把ABI与合约接口弄混以太坊abi生成了。ABI是合约接口的二进制表示。)
4用web3.js提供的JavaScript API来调用合约。(根据调用的类型有可能会消耗以太币。)
实现智能合约以太坊abi生成的方式很多种,可以用truffle框架来实现,编译,部署。
这里介绍一种简单的使用nodejs来实现,编译,部署的方法。
创建一个nodejs项目,实现一个简单的智能合约。
这个合约实现了一个造币和转币的逻辑。
以太坊abi生成我们的合约是运行在evm上面的字节码,solidity是静态语言,需要通过编译器生成evm的字节码。
调用 node compile.js ,对BaseToken进行编译,生成字节码。web3中提供了一个部署合约的接口,使用如下,
利用编译生成的abi和bytecode,创建一个合约对象,然后进行发布,等待着异步执行的方法输出合约地址 contractAddress ,这样就完成了部署。不过这种方式有一个问题,就是在发布合约时,以太坊abi生成你的私钥处于联网状态,
处于安全策略,我们需要尽量避免私钥在联网状态。
以太坊上部署合约是向空地址发送一个附有字节码的签名交易,其中发送者就是这个合约的拥有者。因此我们只需要将合约构建成一笔交易,我们在无网状态下对这笔交易进行签名,然后将签名发送到以太坊网络中。这样能够降低我们私钥被泄漏的风险。
对合约的签名方法如下以太坊abi生成:
以上对一个合约签名,这里需要注意的问题是,to的地址需要是,空地址。
完成签名之后,我们把这笔交易发送出去就好,最简单的方法就是使用 etherscan的发送Tx的方式 ,一旦发送完成,部署完成,就可以看到合约地址。
上一篇使用abi文件部署智能合约。abi文件可以通过eosio.cdt提供的eosio-cpp工具生成。
abi是基于json以太坊abi生成,用来描述如何在json和二进制之间转换行为。一旦通过abi文件来描述你的合约,那么开发者和用户就可以通过json和你的合约进行交互。
个人理解,就是用来描述一个二进制文件的行为,即对外暴露的接口等。
分为隐式和显式两种。
隐式即不是显式定义的struct。
显式如下以太坊abi生成:
如上图所示定义的multi_index,有两个tables以太坊abi生成:accounts和stat
关于以太坊abi生成和以太坊生成器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
评论