146 lines
4.4 KiB
Rust
146 lines
4.4 KiB
Rust
//! NAC 公链创世配置
|
||
//!
|
||
//! 定义 NAC 公链的核心参数,包括代币发行总量、区块参数等。
|
||
//!
|
||
//! # NAC 代币经济模型
|
||
//! - $NAC 原生代币发行总量:10 亿枚(1,000,000,000),固定总量,永不增发
|
||
//! - XTZH 稳定币:锚定 SDR + 黄金储备,按需发行
|
||
//! - XIC 治理代币:已在 BSC 发行(BEP-20),通过跨链桥与 NAC 主网互通
|
||
|
||
/// NAC 公链创世配置
|
||
pub struct GenesisConfig {
|
||
/// 链 ID(NAC 主网:0x4E4143 = "NAC" ASCII)
|
||
pub chain_id: u64,
|
||
/// 链名称
|
||
pub chain_name: &'static str,
|
||
/// 链符号
|
||
pub chain_symbol: &'static str,
|
||
}
|
||
|
||
/// NAC 原生代币配置
|
||
pub struct NacTokenConfig {
|
||
/// 代币名称
|
||
pub name: &'static str,
|
||
/// 代币符号
|
||
pub symbol: &'static str,
|
||
/// 精度(小数位数)
|
||
pub decimals: u8,
|
||
/// 发行总量(固定,永不增发)
|
||
pub total_supply: u64,
|
||
/// 发行总量(带精度的完整表示,18位小数)
|
||
pub total_supply_wei: &'static str,
|
||
}
|
||
|
||
/// XTZH 稳定币配置
|
||
pub struct XtzhConfig {
|
||
/// 代币名称
|
||
pub name: &'static str,
|
||
/// 代币符号
|
||
pub symbol: &'static str,
|
||
/// 精度
|
||
pub decimals: u8,
|
||
/// 锚定机制:SDR + 黄金储备
|
||
pub peg_mechanism: &'static str,
|
||
}
|
||
|
||
/// XIC 治理代币配置
|
||
pub struct XicConfig {
|
||
/// 代币名称
|
||
pub name: &'static str,
|
||
/// 代币符号
|
||
pub symbol: &'static str,
|
||
/// BSC 合约地址(BEP-20)
|
||
pub bsc_contract: &'static str,
|
||
/// 跨链桥锚定机制:1:1 永久锚定
|
||
pub bridge_mechanism: &'static str,
|
||
}
|
||
|
||
/// NAC 主网创世配置(单例)
|
||
pub const MAINNET_GENESIS: GenesisConfig = GenesisConfig {
|
||
chain_id: 0x4E4143, // "NAC" in ASCII
|
||
chain_name: "New Asset Chain Mainnet",
|
||
chain_symbol: "NAC",
|
||
};
|
||
|
||
/// $NAC 原生代币配置
|
||
/// 发行总量:10 亿枚,固定总量,永不增发
|
||
pub const NAC_TOKEN: NacTokenConfig = NacTokenConfig {
|
||
name: "NAC Token",
|
||
symbol: "NAC",
|
||
decimals: 18,
|
||
total_supply: 1_000_000_000, // 10 亿枚,固定总量,永不增发
|
||
total_supply_wei: "1000000000000000000000000000", // 1e27 (10亿 × 10^18)
|
||
};
|
||
|
||
/// XTZH 稳定币配置
|
||
pub const XTZH_TOKEN: XtzhConfig = XtzhConfig {
|
||
name: "XTZH Stable Token",
|
||
symbol: "XTZH",
|
||
decimals: 18,
|
||
peg_mechanism: "SDR + Gold Reserve (黄金储备锚定 SDR 模型)",
|
||
};
|
||
|
||
/// XIC 治理代币配置
|
||
pub const XIC_TOKEN: XicConfig = XicConfig {
|
||
name: "XIC Governance Token",
|
||
symbol: "XIC",
|
||
bsc_contract: "0x59ff34dd59680a7125782b1f6df2a86ed46f5a24",
|
||
bridge_mechanism: "BSC-XIC to NAC-XIC 1:1 永久锚定(5/7 多签验证)",
|
||
};
|
||
|
||
/// CBPP 区块参数
|
||
pub struct CbppParams {
|
||
/// 空块最小大小(字节)
|
||
// CBPP原则:交易决定区块大小,无固定最小值
|
||
// pub min_block_size_bytes: u64, (已移除)
|
||
/// 空块最小大小(KB)
|
||
// pub min_block_size_kb: u64, (已移除,CBPP:交易决定区块大小)
|
||
/// 出块间隔(秒,每节点)
|
||
pub block_interval_per_node_secs: u64,
|
||
/// 共识协议
|
||
pub consensus: &'static str,
|
||
/// 网络协议
|
||
pub network: &'static str,
|
||
/// 虚拟机
|
||
pub vm: &'static str,
|
||
/// 数据透镜协议
|
||
pub lens: &'static str,
|
||
}
|
||
|
||
/// CBPP 主网参数
|
||
pub const CBPP_MAINNET: CbppParams = CbppParams {
|
||
// min_block_size_bytes 已移除:CBPP原则——节点产生区块,交易决定区块大小
|
||
// min_block_size_kb 已移除:CBPP原则——交易决定区块大小,无固定下限
|
||
block_interval_per_node_secs: 60,
|
||
consensus: "CBPP (Constitutional Block Production Protocol)",
|
||
network: "CSNP (Constitutional Secure Network Protocol)",
|
||
vm: "NVM (NAC Virtual Machine)",
|
||
lens: "NAC Lens (NAC Chain Data Lens)",
|
||
};
|
||
|
||
#[cfg(test)]
|
||
mod tests {
|
||
use super::*;
|
||
|
||
#[test]
|
||
fn test_nac_token_total_supply() {
|
||
// $NAC 发行总量:10 亿枚,固定总量,永不增发
|
||
assert_eq!(NAC_TOKEN.total_supply, 1_000_000_000);
|
||
assert_eq!(NAC_TOKEN.symbol, "NAC");
|
||
assert_eq!(NAC_TOKEN.decimals, 18);
|
||
}
|
||
|
||
#[test]
|
||
fn test_chain_id() {
|
||
// NAC 主网链 ID:0x4E4143("NAC" ASCII)
|
||
assert_eq!(MAINNET_GENESIS.chain_id, 0x4E4143);
|
||
}
|
||
|
||
#[test]
|
||
fn test_cbpp_block_params() {
|
||
// 空块最小 10KB
|
||
assert_eq!(CBPP_MAINNET.min_block_size_kb, 10);
|
||
assert_eq!(CBPP_MAINNET.min_block_size_bytes, 10240);
|
||
}
|
||
}
|