对区块链一知半解的人经常会给他人一种善意的忠告:小心,不要被区块链给忽悠了。实际上,常识告诉我们,忽悠人的经常是人,而不是技术。那么,区块链到底是不是一种好的、值得重视的、不可错过的,甚至是堪称伟大的技术呢?区块链有四大核心技术,第一是P2P网络技术,第二是加密技术,第三是智能合约,第四是共识机制。
它们不再需要服务器的桥接就可以直接交换资源:从一个节点上发出的信息经过验证会被发送到周边相邻的节点,而每一个相邻节点又会将交易发送到其他的相邻节点,最终扩散到区块链网络中所有的节点上,从而实现用户与用户之间资源的直接分享与利用。所以,P2P网络技术就是一个非常对等、非常高效的传输协议。成千上万个彼此相连的节点都处于对等的地位,并且可以自由进入和退出网络系统。正是由于P2P网络技术的这个特性,保障了区块链技术是一个分布式的、去中心化的系统。
// 2. Declaration of the Pallet type // This is a placeholder to implement traits and methods. #[pallet::pallet] #[pallet::generate_store(pub(super) trait Store)] #[pallet::generate_storage_info] pub struct Pallet<T>(_);
链式存储结构+数字签名,确保数据无法被轻易篡改和伪造;共识机制确保大多数节点都能够正确出块,任意少数节点都无法破坏整个规则;区块链中的块都是链式单项追加,可以追溯到所有的历史数据。
链式的存储有一个特点,就是“牵一发而动全身”。因为一旦修改了链上的某一个块,后面所有块的信息就不能对应,就得修改到链上所有块的信息,否则,修改的数据信息将不会通过区块链规则、机制的验证,那么修改的块也将作废。如此,保证了数据信息的不可篡改性。
// 3. Runtime Configuration Trait // All types and constants go here. // Use #[pallet::constant] and #[pallet::extra_constants] // to pass in values to metadata. #[pallet::config] pub trait Config: frame_system::Config ...