Version
Show / Hide Table of Contents

合约框架开发参考

NeoContract 的 API 扩展了智能合约的功能,使其可以访问区块链账本数据、操作持久化存储区、访问执行环境等。它是Neo虚拟机(NeoVM)互操作服务层的一部分。

Neo命名空间

区块链数据

API说明
Neo.Blockchain.GetHeight获得当前区块高度
Neo.Blockchain.GetHeader通过区块高度或区块 Hash,查找区块头
Neo.Blockchain.GetBlock通过区块高度或区块 Hash,查找区块
Neo.Blockchain.GetTransaction通过交易 ID 查找交易
Neo.Blockchain.GetAccount根据合约脚本的散列来获得一个账户
Neo.Blockchain.GetValidators获得共识人的公钥
Neo.Blockchain.GetAsset根据资产 ID 查找资产
Neo.Blockchain.GetContract根据合约散列获取合约内容

区块

API说明
Neo.Header.GetHash获得该区块的散列
Neo.Header.GetVersion获得区块版本号
Neo.Header.GetPrevHash获得前一个区块的散列
Neo.Header.GetIndex获得该区块的高度
Neo.Header.GetMerkleRoot获得该区块中所有交易的 Merkle Tree 的根
Neo.Header.GetTimestamp获得区块的时间戳
Neo.Header.GetConsensusData获得该区块的共识数据(共识节点生成的伪随机数)
Neo.Header.GetNextConsensus获得下一个记账合约的散列值
Neo.Block.GetTransactionCount获得当前区块中交易的数量
Neo.Block.GetTransactions获得当前区块中所有的交易
Neo.Block.GetTransaction获得当前区块中指定的交易

交易

API说明
Neo.Transaction.GetHash获得当前交易的 Hash
Neo.Transaction.GetType获得当前交易的类型
Neo.Transaction.GetAttributes查询当前交易的所有属性
Neo.Transaction.GetInputs查询当前交易的所有交易输入
Neo.Transaction.GetOutputs查询当前交易的所有交易输出
Neo.Transaction.GetReferences查询当前交易的所有输入所引用的交易输出
Neo.Attribute.GetUsage获得该交易特性中的用途
Neo.Attribute.GetData获得该交易特性中用途之外的额外数据
Neo.Input.GetHash所引用的交易的交易散列
Neo.Input.GetIndex所引用的交易输出在其全部交易输出列表中的索引
Neo.Output.GetAssetId获得资产 ID
Neo.Output.GetValue获得交易金额
Neo.Output.GetScriptHash获得脚本散列
Neo.Enrollment.GetPublicKey 已弃用 已用 Neo.Blockchain.GetValidators 替代

账户

API说明
Neo.Account.GetScriptHash获得该合约账户的脚本散列
Neo.Account.GetVotes获得该合约账户投给其它人的的投票信息
Neo.Account.GetBalance通过资产 ID 获得该账户中这种资产的余额

资产

API说明
Neo.Asset.GetAssetId获得该资产的 ID
Neo.Asset.GetAssetType获得该资产的类别
Neo.Asset.GetAmount获得该资产的总量
Neo.Asset.GetAvailable获得该资产的已经发行出去的数量
Neo.Asset.GetPrecision获得该资产的精度(最小分割数量),单位为小数点之后的位数
Neo.Asset.GetOwner获得该资产的所有人(公钥)
Neo.Asset.GetAdmin获得该资产的管理员(合约地址),有权对资产的属性(如总量,名称等)进行修改
Neo.Asset.GetIssuer获得该资产的发行人(合约地址),有权进行资产的发行

合约

API说明
Neo.Contract.GetScript获得该合约的脚本

存储

API说明
Neo.Storage.GetContext获取当前存储区上下文
Neo.Storage.Get查询操作,在持久化存储区中通过 key 查询对应的 value

运行

API说明
Neo.Runtime.GetTrigger获得该智能合约的触发条件(应用合约 or 鉴权合约)
Neo.Runtime.CheckWitness验证调用该智能合约的交易 / 区块是否验证过所需的脚本散列
Neo.Runtime.Notify在智能合约中向执行该智能合约的客户端发送通知
Neo.Runtime.Log在智能合约中向执行该智能合约的客户端发送日志

状态修改

此类 API 会对智能合约的状态进行修改

API说明
Neo.Account.SetVotes设置该合约账户投给其它人的的投票信息
Neo.Validator.Register new 报名成为共识人
Neo.Asset.Create new 注册一种资产
Neo.Asset.Renew new 为资产续费
Neo.Contract.Create new 发布智能合约
Neo.Contract.Migrate new 迁移 / 更新智能合约
Neo.Contract.Destroy new 销毁合约
Neo.Contract.GetStorageContext new 获得合约的存储上下文
Neo.Storage.Put插入操作,以 key-value 的形式向持久化存储区中插入数据
Neo.Storage.Delete删除操作,在持久化存储区中通过 key 删除对应的 value

System 命名空间

API说明
System.ExecutionEngine.GetScriptContainer获得该智能合约的脚本容器(最开始的触发者)
System.ExecutionEngine.GetExecutingScriptHash获得该智能合约执行的脚本散列
System.ExecutionEngine.GetCallingScriptHash获得该智能合约的调用者的脚本散列
System.ExecutionEngine.GetEntryScriptHash获得该智能合约的入口点(合约调用链的起点)的脚本散列