一旦一笔交易被转发到任何验证器,验证器就会将其转发到未来的领导者之一。客户端可以订阅验证器的交易确认信息。客户端知道区块哈希在有限的时间内过期,或者交易被网络确认。这允许客户端签署对保证执行或失败的交易进行签名。 一旦网络过了回滚点,交易引用的区块哈希就会过期,客户就可以保证交易现在是无效的,且永远不会在链上执行。 到目前为止,很明显,区块链网络的功能只有在其内存池最小的情况下才会发挥作用。 当交易吞吐量有限的网络承担着尝试改造全新的扩展技术来解决不断增加的内存池的努力时,Solana从一开始就通过海湾流等优化设计来解决第一代区块链网络的问题,并实现巨大的交易吞吐量。 海平面(Sealevel):智能合约运作并行引擎以太坊的EVM和EOS的基于WASM的runtime都是单线程的。这意味着每次都会有一个智能合约修改区块链的状态。 而Solana建立的智能合约运作并行引擎——海平面(Sealevel),可以并行处理数以万计的合约,并使用验证器作为核心。它可以使Solana的执行时间更有效率,还可让交易在相同状态的区块链上同时执行。 Solana之所以能够并行处理交易,是因为Solana的一笔交易在执行时,将读取或写入所有状态。这不仅允许非重叠的交易并发执行,而且允许只读取相同状态的交易也并发执行。 Solana的帐户数据库Cloudbreak是一个公钥到帐户的映射。所有者是管理账户状态转换的程序的公钥。程序是代码,无状态。它们依靠分配给它们的账户中的数据向量进行状态转换。 默认情况下,所有账户开始时都是由系统程序拥有的。用户定义的程序由加载器程序加载。加载器程序能够将账户中的数据标记为可执行。 此时,加载器验证了字节码,字节码被加载到的账户可以作为一个可执行程序使用。新账户可以被标记为由用户定义的程序所拥有。 这里的关键是,程序是代码,在键值存储中,存在一些键的子集,这个程序并且只有这个程序有写访问权限。 交易指定一个指令向量。每条指令都包含程序、程序指令和交易要读写的账户列表。 像readv或writeev这样的接口会提前告诉内核用户想要读取或写入的内存。这允许操作系统预取、准备设备并在设备允许的情况下同时执行操作。 在Solana上,每条指令都会提前告诉虚拟机它要读和写哪些账户。 SIMD指令允许单段代码在多个数据流上执行。这意味着Sealevel可以执行一个额外的优化,这是Solana设计所特有的。 在性能方面没有免费的午餐。为了使SIMD优化可行,所执行的指令应该包含少量的分支,而且应该都采取相同的分支。 (责任编辑:admin) |