三种验证方法
想要改变合约状态,就必须要接受内部或者外部消息,对于消息的验证就是第一步。
以下将介绍四种TON合约对于消息验证的四种方法。
第一种认证是基于签名的认证,例如,以接收到一个外部信息为例,每当外部消息进入钱包时,它会读取 64 字节的数据 ,即消息剩下的部分的签名,再用公钥验证签名,然后将消息其余部分视为向区块链内部其他合约发送其他消息的指令。
第二种机制是验证信息发送者。这主要涉及收到内部消息时,因为TON 中的所有内部信息都由信息的发送者识别,TON 协议保证信息发送者的正确性和安全性,每当一个合约收到内部信息时,它都能确定该信息是从其他哪个合约收到的。这比检查签名要便宜得多。
第三种机制,DNA 可信代码检查。 TON 中的地址不仅是合约的唯一标识符,还是合约代码和数据的加密安全哈希值,当数据发生变化时,地址也不会改变。由于这些地址是对这些代码的加密,因此可以通过检查消息发送者来验证另一端的代码。
三种费用
TON 通常有三类费用。分别是Gas fee、租金(rent)和信息费(message fee)。
TON 是一个公共网络,与任何公共网络一样,它也会受到任何人的攻击,因此应格外注意保护免受DoS攻击。
这就意味着,如果有用户承担着某些多种cost支出,而这些支出可能会被恶意扩大时,会对整个经济系统造成巨大的生存隐患,所以任何可能会被扩大化的支出都需要醒目的标识标记出来。
燃料(Gas cost)
TON 是一个计算平台。合约可以包含任意代码,任何人都可以向网络上传任何代码。一旦他们这样做,整个网络就会处理 并运行这些代码。
Gas意味执行的燃料,最初是在以太坊中发明的。原理是对于代码中的每个操作,都有一个名义上的成本,让你可以分清哪些操作会更贵一些,哪些更便宜一些。然后还有一个确定gas价格的全局参数,计算出所有这些操作在当前市场价格下的总成本。
与以太坊或比特币不同, TON 的设计方式让它不会为稀缺的矿工打包算力或区块规模局限。相反,因为TON的无限分块,如果今天的gas price =1 ,明天负载更高的时候,那么验证者将赚取更高的费用,但用户不必花额外的钱,而是支付相同的价格,只不过TON网络将会横向扩展。
租金(Rent)
租金 - 合约在单位时间内存储单个比特数据的成本。
如果使用钱包,你可能会注意到,如果有几天没有使用钱包了,那么发送的第一笔交易的费用会比下一笔交易的费用略高一些。
这就是因为钱包闲置了一两周,积累了一些较为明显的租金,而这笔钱在进行交易时收取了。
消息费用(Message fee)
消息费用 - 是在运行阶段,当你的合约为自己创建传出信息和创建新状态时产生的。这些费用通常很低,因为合约之间传输的数据并不多。