智能合约框架
Neo 智能合约框架是对智能合约开发中使用的 API 的封装,使C#合约开发者可以直接使用 Neo核心模块中的类、方法、属性来方便地与Neo区块链交互,进而获得区块链账本数据、操作持久化存储区和NeoVM的执行状况等信息。
Neo.SmartContract.Framework 提供了以下重要的API方法集:
-
互操作服务的方法
-
常用方法
互操作服务层的方法
互操作服务层提供的API包含在以下命名空间:
-
Neo.SmartContract.Framework.Services.NEO
Neo 命名空间是 Neo 区块链所提供的 API,提供了访问区块链账本数据和操作持久化存储区的方法。
类 说明 Account 表示账户的类,提供了查询余额的方法 Asset 表示资产的数据结构 Block 表示区块的类,提供了查询区块中交易的方法 Blockchain 该类提供了访问区块链数据的一系列方法 Contract 表示合约的类 Header 表示区块头的数据结构 InvocationTransaction 表示调用合约交易的类 Iterator 表示枚举器的类 Runtime 提供智能合约运行时的一些方法 Storage 提供了持久化存储区的插入、查询、删除的方法 StorageContext 表示私有存储区存储上下文的类 StorageMap 表示 Map 数据结构的类 Transaction 表示交易的基类 TransactionAttribute 表示交易特性的数据结构 TransactionInput 表示交易输入的数据结构 TransactionOutput 表示交易输出的数据结构 枚举 说明 ContractPropertyState 表示智能合约属性状态的枚举 TriggerType 表示智能合约触发条件的枚举 -
Neo.SmartContract.Framework.Services.System
System 命名空间是智能合约执行引擎(NeoVM)提供的 API,提供了访问该智能合约的执行环境的方法。
类 说明 ExecutionEngine 虚拟机的执行引擎,可以获取当前合约的调用者和执行容器
Neo提供的常用方法
在智能合约中还可以直接调用智能合约框架本身提供的常用方法,这些方法直接归属于 Neo.SmartContract.Framework 命名空间。
SmartContract类提供的方法
SmartContract 类提供了一些散列算法以及验签方法,通过继承SmartContract类来使用这类方法。
如果找不到这些方法,请检查你的类是否继承自 SmartContract 类。
Helper扩展方法
下表列出了智能合约框架中的 Helper 类提供的一些 扩展方法
。
名称 | 说明 | |
---|---|---|
不同数据类型的转换 | ||
byte[] AsByteArray(this source) | 源数据 => byte[],支持: byte, byte[], sbyte, sbyte[], BigInteger, string, | |
byte[] HexToBytes(this string hex) | Hex字符串 => byte[] | |
BigInteger AsBigInteger(this byte[] source) | byte[] => BigInteger | |
BigInteger ToBigInteger(this source) | byte[] => BigInteger string => BigInteger | |
string AsString(this byte[] source) | byte[] => string | |
byte ToByte(this source) | BigInteger => byte int => byte | |
byte[] ToScriptHash(this string address) | 钱包地址 => ScriptHash | |
Byte数组相关 | ||
byte[] Concat(this byte[] first, byte[] second) | 连接两个 byte 数组 | |
byte[] Range(this byte[] source, int index, int count) | 截取 byte 数组,参数为:index, count | |
byte[] Take(this byte[] source, int count) | 从 byte 数组中取左侧固定长度的 byte 数组,参数为:count | |
byte[] Last(this byte[] source, int count) | 从 byte 数组中取右侧固定长度的 byte 数组,参数为:count | |
byte[] Reverse(this byte[] source) | 逆转字节数组 | |
序列化 | ||
byte[] Serialize(this object source) | 序列化对象为字节数组 | |
object Deserialize(this byte[] source) | 反序列化字节数组为对象 |