Web 3.0 is a new Internet concept, representing a major change from static Web 1.0 to dynamic Web 2.0. Unlike Web 2.0, Web 3.0 is considered to be a more intelligent, connected, personalized and distributed Internet.
The core idea of Web3.0 is to use AI and blockchain technology to realize the intelligence, decentralization and security of the Internet. It is expected to provide richer personalized experience, simpler data interaction and more transparent data control
struct permission_level_weight{
permission_level permission;
uint16_t weight;
EOSLIB_SERIALIZE(permission_level_weight,(permission)(weight))
};
注意,合约中定义的结构体一般都会在末尾加入EOSLIB_SERIALIZE宏,将结构体的字段属性序列化,这行代码不是必须的,但加上了能够加快解析的速度,从而提升编译效率。
权限等级权重结构体只有两个字段,一个是permission_level类型的对象permission,另一个是16位的无符整型类型的权重。permission_level是定义在eosiolib/action.hpp文件中的一个结构体。它是通过一个账户名以及其权限名构建的,例如{"useraaaaaaaa","active"},这样的一个组合构成了一个权限对象。
struct key_weight{
eosio::public_key key;
uint16_t weight;
EOSLIB_SERIALIZE(key_weight,(key)(weight))
};
这个结构体的结构与前面的相似,所以陌生的部分只有eosio::public_key,这是定义在eosiolib/crypto.hpp中的结构体,它代表了EOS中一个公钥对象,该对象可以是K1类型或者R1类型。
secp256k1和secp256r1是两种椭圆曲线数学模型,均属于公钥生成算法。私钥生成公钥的算法也即ECC的字面含义椭圆曲线,是通过该数学模型生成的一种正向快速逆向困难的算法,目前这个算法包括secp256k1和secp256r1,secp256k1是首先使用的,而secp256r1据说更有优势,但也有被爆漏洞的历史,由于比特币没有使用secp256r1,因此还有“比特币躲过secp256r1子弹”的说法。目前这两种EOS均支持。