4.4 区块链类 (Blockchain Types)
Sway is fundamentally a blockchain language, and it offers a selection of types tailored for the blockchain use case.
Sway从根本上说是一种区块链语言,它为区块链的使用情况提供了一系列的类。
These are provided via the standard library (lib-std
) which both add a degree of type-safety, as well as make the intention of the developer more clear.
这些类通过标准库(lib-std
)提供,既增加了一定程度的类的安全性,又使开发者的意图更加明确。
Address
类 (Address
Type)
Address
类 (Address
Type)The Address
type is a type-safe wrapper around the primitive b256
type. Unlike the EVM, an address never refers to a deployed smart contract (see the ContractId
type below). An Address
can be either the hash of a public key (effectively an externally owned account if you're coming from the EVM) or the hash of a predicate. Addresses own UTXOs.
Address
类是对原始的 b256
类的一个类安全封装。与EVM不同的是,地址永远不会指向已部署的智能合约(见下面的ContractId
类型)。一个Address
可以是一个公钥的哈希值(如果你是从EVM来的,那么实际上是一个外部拥有的账户)或者是一个谓词的哈希值。地址拥有UTXO。
An Address
is implemented as follows.
一个Address
的实施如下:
Casting between the b256
and Address
types must be done explicitly:
b256
和Address
类型之间的转换必须明确进行:
ContractId
类 (ContractId
Type)
ContractId
类 (ContractId
Type)The ContractId
type is a type-safe wrapper around the primitive b256
type. A contract's ID is a unique, deterministic identifier analogous to a contract's address in the EVM. Contracts cannot own UTXOs but can own assets.
ContractId
类是对原始的 b256
类的一个类安全封装。一个合约的ID是一个唯一的、确定的标识符,类似于EVM中的合约地址。合约不能拥有UTXO,但可以拥有资产。
A ContractId
is implemented as follows.
一个 ContractId
的实施如下:
Casting between the b256
and ContractId
types must be done explicitly:
b256
和 ContractId
类型之间的转换必须明确进行:
Identity
类 (Identity
Type)
Identity
类 (Identity
Type)The Identity
type is an enum that allows for the handling of both Address
and ContractId
types. This is useful in cases where either type is accepted, e.g. receiving funds from an identified sender, but not caring if the sender is an address or a contract.
Identity
类是一个穷举,允许处理 Address
和 ContractId
类。这在任何一种类都被接受的情况下是有用的,例如,从一个确定的发件人接收资金,但不关心发件人是一个地址还是一个合同。
An Identity
is implemented as follows.
一个 Identity
的实施如下:
Casting to an Identity
must be done explicitly:
铸造到一个 Identity
必须明确进行:
A match
statement can be used to return to an Address
or ContractId
as well as handle cases in which their execution differs.
match
语句可用于返回到Address
或 ContractId
,以及处理它们执行不同的情况。
A common use case for Identity
is for access control. The use of Identity
uniquely allows both ContractId
and Address
to have access control inclusively.
Identity
的一个常见用例是用于访问控制。使用Identity
可以唯一地允许ContractId
和Address
, 同时拥有访问控制。
Last updated