5.7.1.6 实用程序

以下这些函数处理的值,是以 JavaScript 的形式表现 Reach 中的值。


protect(t, x) => x

断言 x 的值具有 Reach 的类型 t 。如果不是这样,则抛出异常。


T_Null => ReachType
T_Bool => ReachType
T_UInt => ReachType
T_Bytes(number) => ReachType
T_Digest => ReachType
T_Address => ReachType
T_Array(ReachType, number) => ReachType
T_Tuple([ReachType …]) => ReachType
T_Object({Key: ReachType …}) => ReachType
T_Data({Variant: ReachType …}) => ReachType

以上每一个都代表相应的 Reach 类型


assert(p)

若未给定 true,则抛出异常。


Array_set(arr, idx, val)

返回与 arr 相同的新数组,只是索引 idx 是 val 。


bigNumberify(x) => UInt
isBigNumber(x) => bool
bigNumberToNumber(x) => number

bigNumberify 将 JavaScript 数字转换为 BigNumber ,即 Reach 的 UInt 在 JavaScript 的表示。

isBigNumber 检查其输入是否为 BigNumber 。

bigNumberToNumber 将 BigNumberRify 作为其参数进行显式调用,并返回一个 JavaScript 数字。


isHex(x) => bool
hexToBigNumber(bytes) => UInt
stringToHex(string) => bytes
bigNumberToHex(UInt) => bytes
uintToBytes(UInt) => bytes
bytesEq(bytes, bytes) => bool
digestEq(Digest, Digest) => bool
addressEq(Address, Address) => bool

这些额外的实用程序用转换和比较。


digest(x) => Digest

将值进行哈希处理。


randomUInt() => UInt

生成随机比特作为一个 UInt 。生成的比特数取决于特定的共识网络


hasRandom

该值适用于需要 random 函数的参与者交互接口


parseFixedPoint(FixedPoint) => number

将定点数 FixedPoint 解析为 Javascript 数。


parseInt(Int) => number

将带符号 Int 解析为 Javascript 数。


add(UInt, UInt) => UInt
sub(UInt, UInt) => UInt
mod(UInt, UInt) => UInt
mul(UInt, UInt) => UInt
div(UInt, UInt) => UInt

UInt 的整数运算。


eq(UInt, UInt) => bool
ge(UInt, UInt) => bool
gt(UInt, UInt) => bool
le(UInt, UInt) => bool
lt(UInt, UInt) => bool

UInt 的整数比较。


以下导出用于处理网络代币。
standardUnit // string
atomicUnit // string
minimumBalance // atomicUnitAmount
parseCurrency(standardUnitAmount) => atomicUnitAmount
formatCurrency(atomicUnitAmount, int) => string // 以标准单位显示余额

这些函数以网络的标准单位原子单位处理余额。标准单位是与该网络最普遍相关的网络代币单位。例如,以太坊的标准单位是 ETH 。原子单位是标准单位的最小度量单位。例如,以太坊的原子单位是 WEI 。原子单位是原子的,这意味着它不能被分成更小的单位。

一些共识网络,尤其是基于 PoS(权益证明)的,在他们的账户上有最低余额,因此这被显示为 minimumBalance. 。

因为 1 ETH = 1,000,000,000,000,000,000 WEI ,故 BigNumber 用于代表 WEI 的值。

网络代币的数量应始终以代币的原子单位传递给 Reach 。

bigNumberify 将被 formatCurrency 作为其第一个参数显式调用。