- UID
- 169246
- 阅读权限
- 90
- 注册时间
- 2021-11-25
- 最后登录
- 1970-1-1
- 在线时间
- 小时
- 人气
- 点
- MC币
- 个
- 贡献
- 点
|
本系列将重点介绍两种函数式编程语言:RE。本篇分享函数式编程的思想和践。文中提到imtoken天生有着强韧的生命力,经过风吹雨打也能化茧成蝶成为最优秀的自己。
在这篇文章中将展示ER读取以太坊智能合约的功能。重要的是,该程序不仅在以太坊上工作,而且还在任何支持EVM的区块链上工作,例如,P上的M !
E EABI我更喜欢 E 的两个存储库是 E:用于以太坊区块链的 E JSON-RPC 客户端。
EABI:S的应用程序二进制接口(ABI)描述了如何将二进制数据转换为S编程语言能够理解的类型。
ABI 小贴士:
ABI(应用程序二进制接口)是计算机科学中两个程序模块之间的接口。
它与API(应用程序接口)非常相似,API是代码接口的可读表示形式。ABI定义了用于与二进制合约交互的方法和结构,就像API那样,只是在更低的层次上。
文件包含了格式的函数接口和事件的描述。
这是 HW 的示例 ABI:
[{ : , : [], : , : [{ : , : } ], : , M: , : }]E 的配置
首先,让我们将 E 添加到 中的 应用领域!
# : [ : {TSA, []}, _: [:, :_, :] ]…… [ {:, ~ 070} ]然后,在中。将以太坊协议主机参数添加到配置文件中:
# :, : ::8545 # T结构
在 E 中显示
通过代码很容易理解E中的S。
以太坊的在E中显示:
T{ : , # _: @, # _: @, # : _, # : 0, # : , # : # }我们刚刚读取了以太坊中的数据,因此随机数是没有用的。只有在我们把数据写进合约的时候才需要更改随机数。
_
立即执行一个新的消息调用,而不需要在区块链上创建交易。
参数
O -交易调用对象
: DATA, 20 B -(可选)交易发送的地址
: DATA, 20 B -交易被指向到的地址
: QUANTITY -(可选)为交易执行提供的整数。_消耗零,但某些执行可能需要这个参数
P: QUANTITY -(可选)每一种付费使用的P的整数
: QUANTITY -(可选)与该交易一起发送的值的整数
: DATA -(可选)方法签和编码参数的哈希值
QUANTITY|TAG -整数区块号,或字符串, 或,参见默认区块参数
返回
DATA -已执行合约的返回值。
例子
R -X POST -- {:20,:_,:[{ }],:1} R{ :1, : 20, : 0}的机制对新人不友好,所以我们现在可以设置_和_为一个特定的数字:
@ %{: 0, : 00_000}
在 R 中显示
它是 R 中的一个类似结构:
: #A%20H%20S%20G---- = TR { : [0], : S([1]), : N, _: N, : S(U256::(10000)), : N, : N, : N };现在我们应该处理的两个参数:
。
地址的字符串到二进制
区块链中使用的地址(如0769699506972A9928950C766F0C7256D601)可以在E程序中转换为二进制:
@ __(S()) :: B() __(_) _ | S(0, ) | B16!(: :)智能合约功能到数据
我们希望通过以太坊函数和参数列表的字符串样式生成数据:
@ _(S(), L()) :: S() _(_, ) = _ | ABI() | B16(: :) 0 “以太坊函数的字符串样式”示例:
@ %{ _: O(), ____: OOBI(, 256), _: URI(256), ___: EBK(), ___: EBK(, ), _: N(, ), _: O(256) }函数的字符串样式抽象为_(_1, _2,…)
深入了解函数的现是很好的!
(_, , _ \\ :)# _# _ (_, , _) _(_) _ | P!() | (, _) (%FS{} = _, , _) TE(, _, _)FS的结构:
(5) ABIP!((8))%ABIFS{ : , _: [], _: , _: , : [], : , : [: 8]}TE 的工作是编译数据,_ 和 _ 转换为数据。
智能合约响应的翻译器
在 E 中编写一个 TT 将十六进制数据更改为普通数据用于智能合约的响应是好的:
UTT …… __() | __() | ABITD_([{:, 256}]) | L() __() | __() | ABITD_([:]) | L() __() _ = | __() | ABITD_([:]) | L() 0 B16(_, : :) ……我们要选择的函数是基于响应的类型,我们可以在ABI中获取它:
{ : , : [], : , : [{ : , : # T ! } ], : , M: , : }E中的调用者
这是最后一步!只要把上面的功能混合在一起,智能合约的数据读取就可以工作了!
例如:读取ERC20代币的余额:
@ _(S(), S()) :: I() _(_, _) {:, _} = TT__(_) = _(O(), [_]) {:, _} = EHC_(%{ # : , : _ }) TT__(_)R 中的调用者
最后一个是调用以太坊的例子
; _::; ::{ ::{C, O}, ::{U256, H160, B},};#[::] () - ::::R() { _ = _::_(); = ::::H::(99544088124456161)?; = ::W::(); _8 = ::(7A1164CDA66BC92977EE2CFEC412A10)(D ); _160 = H160::_(_8); = C::_( (), _160, _!(_), )?; :[8; 20] = !(249047194056672794566)(); = ::(, (), N, O::(), N)?; !({}, ); O(())}S:-------------- |
|