# 智能合约

# 概述

智能合约是可编程区块链账户,也就是将一段代码存在区块链的一个账户下,当这个账户接收到交易,就会按照内置代码运算,并将运算结果更新到该账户对应的区块链数据库中。

# 合约类型

为了确保安全和灵活性,TOP Network提供了两种类型的智能合约:系统智能合约和用户智能合约。

# 系统智能合约

系统智能合约部署在主链上,采用 C++ 语言开发。用于涉及资产转移、选举和链上管理的场景。这些合约是在基于堆栈的非图灵完备编写的脚本语言,确保安全性和可执行性。尽管系统智能合约不是图灵完备,它们可以灵活调用由核心VM执行的内置的图灵完备核心函数。

TOP Network系统合约提供的功能包括矿工注册、投票、节点入网、节点选举、链上治理等。

系统合约如下表所示:

系统合约 部署位置 合约地址 说明 合约名称 是否时钟触发
集群选举相关合约 Beacon T2000138JQPo5TcurZsVLFUMd5vHJRBLenLWjLhk6@0
T2000138Kc9WynduqxJvX3VCU7XjHCR9YyKuBL1fx@0
选举Beacon group合约。 beacon_election_contract
zone_beacon_election_contract
T2000138NpRxYCFQxMHvedTxRpgkb8B7oHt235N2W@0 选举edge group合约。 edge_election_contract
T2000138NXb36GkofBUMqxCAZqdERi63htDVC8Yzt@0 选举archive group合约。 archive_election_contract
T2000138CQwyzFxbWZ59mNjkq3eZ3eH41t7b5midm@0
T200024uCQ5Di2vZmPURNYVUuvWm5p7EaFQrRLs76@2
"@0"候选池合约,包括所有候选及当选Beacon、edge和archive节点信息。
"@2"候选池合约,存储@0候选池可信高度。
beacon_candidate_contract
zone_beacon_candidate_contract

T200024uHxGKRST3hk5tKFjVpuQbGNDihMJR6qeeQ@2 选举auditor/validator group合约。 zone_beacon_election_contract
T200024uN3e6AujFyvDXY4h5t6or3DgKpu5rTKELD@2 分片关联关系合约。 cluster_shard_contract
链上治理合约 T2000138Ao4jjYtrXoNwfzb6gdpD2XNBpqUv46p8B@0 链上治理合约。 government_contract
注册合约 T2000138NZjvNJjRNG5iEqVKydpqAqoeNjBuFmNbj@0 矿工注册合约。 miner_register_contract
T200024uAt8Na2U1GUtWSHXJSqaJJBXunUX9WU9kB@0 对分片汇总上来的工作量数据进行处理,例如计算节点奖励。 zone_workload_contract
T200024uPV1k6XjTm9No5yB2mxBPK9o2XqJKyhDUn@0 zone投票汇总合约 zone_votes_contract
T200024uDhihoPJ24LQL4znxrugPM4eWk8rY42ceS@1 对分片汇总上来的惩罚数据进行处理,例如计算节点惩罚。 zone_block_signing_rate_contract
奖励发行合约 T200024uV5yB1ZCnXe7SbViA86ufhouFjpDKNRd3X@0 增发TOP token作为奖励池。 token_issue_and_reward_contract
分片合约 Validator Network T20000MFGB3gFWSsMfEo9LrC7JEaj1gJTXaYfXny@0~255 统计分片工作量合约。 table_workload_contract
T20000ML7oBZbitBCcXhrJwqBhha2MUimd6SM9Z6@0~255 统计分片惩罚合约。 table_block_signing_rate_contract
T20000MTotTKfAJRxrfvEwEJvtgCqzH9GkpMmAUg@0~255 分片奖励领取合约。 table_reward_contract
T20000MVfDLsBKVcy1wMp4CoEHWxUeBEAVBL9ZEa@0~255 投票合约。 table_vote_contract

# 用户智能合约

# 合约开发

用户智能合约当前只支持Lua脚本语言开发,未来我们会支持更丰富的虚拟机。

Lua API使用指南请参见用户智能合约 API

# 合约部署

使用TOPIO、RPC API或者TOP Network官方SDK部署用户智能合约。

TOPIO是TOP Network面向社区用户提供的集命令行客户端与节点主程序的一款工具,使用指南请参见TOPIO使用指南

RPC API是TOP Network提供给社区使用的与链交互的接口,包括发送交易,查询交易信息、矿工信息、链信息等,RPC API使用指南请参见RPC API

TOP Network软件开发工具包(SDK)封装了加密算法、RPC交互和智能合约,是应用程序与TOP Network网络之间交互的桥梁,SDK使用指南请参见SDK使用指南

# 合约调用

可通过TOPNetwork提供的RPC API、SDK、TOPIO或者其他客户端(钱包等)调用用户智能合约。