| Number | 0024 |
|---|---|
| Category | Informational |
| Status | Final |
| Author | Dylan Duan <duanyytop@gmail.com> |
| Created | 2020-05-21 |
Genesis scripts are the smart contracts built by the CKB team and set in the CKB genesis block. Genesis scripts provide core functions like (e.g. SECP256k1/blake160 and Nervos DAO). This document presents the information of all Nervos CKB genesis scripts, including a brief introduction and code_hash, hash_type, out_point(tx_hash and index), dep_type on mainnet Lina and testnet Aggron.
Genesis scripts are used frequently in dapps, wallets, and other application development. A list of genesis scripts provides a handy reference to developers.
To construct transactions with genesis scripts, the code_hash, hash_type, out_point and dep_type of genesis scripts in mainnet Lina and testnet Aggron are needed.
SECP256K1/blake160 (Source Code) is the default lock script to verify CKB transaction signature.
SECP256K1/blake160 script is for lock script:
- Lina
| parameter | value |
|---|---|
code_hash |
0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8 |
hash_type |
type |
tx_hash |
0x71a7ba8fc96349fea0ed3a5c47992e3b4084b031a42264a018e0072e8172e46c |
index |
0x0 |
dep_type |
dep_group |
Note:
The dep_type of SECP256K1/blake160 in Lina is dep_group means that the content of this dep cell contains two cell deps which are secp256k1_data and secp256k1_blake160_sighash_all whose dep_type are code.
The out_point of secp256k1_data is
{
tx_hash: 0xe2fb199810d49a4d8beec56718ba2593b665db9d52299a0f9e6e75416d73ff5c,
index: 0x3
}
and the out_point of secp256k1_blake160_sighash_all is
{
tx_hash: 0xe2fb199810d49a4d8beec56718ba2593b665db9d52299a0f9e6e75416d73ff5c,
index: 0x1
}
- Aggron
| parameter | value |
|---|---|
code_hash |
0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8 |
hash_type |
type |
tx_hash |
0xf8de3bb47d055cdf460d93a2a6e1b05f7432f9777c8c474abf4eec1d4aee5d37 |
index |
0x0 |
dep_type |
dep_group |
Note:
The dep_type of SECP256K1/blake160 in Aggron is dep_group means that the content of this dep cell contains two cell deps which are secp256k1_data and secp256k1_blake160_sighash_all whose dep_type are code.
The out_point of secp256k1_data is
{
tx_hash: 0x8f8c79eb6671709633fe6a46de93c0fedc9c1b8a6527a18d3983879542635c9f,
index: 0x3
}
and the out_point of secp256k1_blake160_sighash_all is
{
tx_hash: 0x8f8c79eb6671709633fe6a46de93c0fedc9c1b8a6527a18d3983879542635c9f,
index: 0x1
}
SECP256K1/multisig (Source Code) is a script which allows a group of users to sign a single transaction.
SECP256K1/multisig script is for lock script:
- Lina
| parameter | value |
|---|---|
code_hash |
0x5c5069eb0857efc65e1bca0c07df34c31663b3622fd3876c876320fc9634e2a8 |
hash_type |
type |
tx_hash |
0x71a7ba8fc96349fea0ed3a5c47992e3b4084b031a42264a018e0072e8172e46c |
index |
0x1 |
dep_type |
dep_group |
Note:
The dep_type of SECP256K1/multisig in Lina is dep_group means that the content of this dep cell contains two cell deps which are secp256k1_data and secp256k1_blake160_multisig_all whose dep_type are code.
The out_point of secp256k1_data is
{
tx_hash: 0xe2fb199810d49a4d8beec56718ba2593b665db9d52299a0f9e6e75416d73ff5c,
index: 0x3
}
and the out_point of secp256k1_blake160_multisig_all is
{
tx_hash: 0xe2fb199810d49a4d8beec56718ba2593b665db9d52299a0f9e6e75416d73ff5c,
index: 0x4
}
- Aggron
| parameter | value |
|---|---|
code_hash |
0x5c5069eb0857efc65e1bca0c07df34c31663b3622fd3876c876320fc9634e2a8 |
hash_type |
type |
tx_hash |
0xf8de3bb47d055cdf460d93a2a6e1b05f7432f9777c8c474abf4eec1d4aee5d37 |
index |
0x1 |
dep_type |
dep_group |
Note:
The dep_type of SECP256K1/blake160 in Aggron is dep_group means that the content of this dep cell contains two cell deps which are secp256k1_data and secp256k1_blake160_multisig_all whose dep_type are code.
The out_point of secp256k1_data is
{
tx_hash: 0x8f8c79eb6671709633fe6a46de93c0fedc9c1b8a6527a18d3983879542635c9f,
index: 0x3
}
and the out_point of secp256k1_blake160_multisig_all is
{
tx_hash: 0x8f8c79eb6671709633fe6a46de93c0fedc9c1b8a6527a18d3983879542635c9f,
index: 0x4
}
Nervos DAO (Source Code) is the script implements Nervos DAO.
Nervos DAO script is for type script:
- Lina
| parameter | value |
|---|---|
code_hash |
0x82d76d1b75fe2fd9a27dfbaa65a039221a380d76c926f378d3f81cf3e7e13f2e |
hash_type |
type |
tx_hash |
0xe2fb199810d49a4d8beec56718ba2593b665db9d52299a0f9e6e75416d73ff5c |
index |
0x2 |
dep_type |
code |
- Aggron
| parameter | value |
|---|---|
code_hash |
0x82d76d1b75fe2fd9a27dfbaa65a039221a380d76c926f378d3f81cf3e7e13f2e |
hash_type |
type |
tx_hash |
0x8f8c79eb6671709633fe6a46de93c0fedc9c1b8a6527a18d3983879542635c9f |
index |
0x2 |
dep_type |
code |
Strictly speaking, Type ID (Source Code) is a builtin script directly implemented in Rust within CKB, it doesn't run in CKB-VM. It's still included in this document because it can be used the same way as other genesis scripts since genesis block.
Type ID is used to support unique and immutable references. The code_hash and hash_type are fixed and the same on mainnet Lina and testnet Aggron and the dep_type is no need.
Type ID script is for type script:
- Lina & Aggron
| parameter | value |
|---|---|
code_hash |
0x00000000000000000000000000000000000000000000000000545950455f4944 |
hash_type |
type |