智能合约是一种可编程的自动执行合约,其代码被嵌入到区块链中。智能合约可以实现从简单的交易到复杂的jin交易、管理和控制,从而实现去中心化的应用。智能合约在执行过程中,由区块链网络上的多个节点共同执行,确保所有参与者都能按照合约执行交易。由于智能合约可以自动执行,不需要中心化的第三方机构来验证和执行合约,因此可以有效地去除中间环节,实现去中心化的应用场景。
去中心化是相对于“中心化”网络模式而言的新型内容生产过程。传统中心化网络,数据一般存储在网络中一个或者几个核心节点上,如今很多互联网巨头企业都会有自己的数据中心,对企业和用户数据进行集中存储,但一旦出现问题,很容易导致数据损伤。
而区块链的去中心化就是将这些数据分散存储在区块链网络中多个节点上。节点的多少并没有准确的限制,只要实现存储的数据无法被单元独立支配,就算是实现了去中心化。节点越多,数据的安全性也会越高,同时运行成本和所需能耗也会增长。
作为区块链诸多特性中的重要的一个特点,其使用分布式储存与算力,使得整个网络节点的权利与义务相同,系统中数据本质为全网节点共同维护,从而区块链不再依靠于中央处理节点,实现数据的分布式存储、记录与更新。而每个区块链都遵循统一规则,该规则基于密码算法而不是信用证书,且数据更新过程都需用户批准,由此奠定区块链不需要中介与信任机构背书。
// Performs this operation first as it may fail let new_cnt = Self::count_for_kitties().checked_add(1) .ok_or(<Error<T>>::CountForKittiesOverflow)?; // Check if the kitty does not already exist in our storage map ensure!(Self::kitties(&kitty_id) == None, <Error<T>>::KittyExists); // Performs this operation first because as it may fail <KittiesOwned<T>>::try_mutate(&owner, |kitty_vec| { kitty_vec.try_push(kitty_id) }).map_err(|_| <Error<T>>::ExceedMaxKittyOwned
去中心化的分布式系统虽然有很多好处,但设计并运行这样的系统是很难的,因为和中心化系统相比,它运行在一个不可信任的环境中,要保持系统的一致性、完整性、安全性是非常困难的。往往中心化系统很容易做到的事,在去中心化系统中会非常困难。