From 29544afec4c93b1c6537ff7a56154d432053b009 Mon Sep 17 00:00:00 2001 From: NAC Admin Date: Fri, 6 Mar 2026 16:03:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(charter-compiler):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AE=8C=E6=95=B4=20ACC=20=E5=8D=8F=E8=AE=AE=E6=97=8F=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=94=AF=E6=8C=81=EF=BC=8822=E4=B8=AA=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TypeAnnotation 枚举新增 17 个 ACC 类型: ACC20Enhanced, ACC20C, ACCCompliance, ACCValuation, ACCCustody, ACCCollateral, ACCRedemption, ACCInsurance, ACCGovernance, ACCXTZH, ACCReserve, ACC1410, ACC1400, ACC1594, ACC1643, ACC1644 操作码新增 37 个 ACC 专用操作码: 基础代币: ACC20_MINT/BURN, ACC721_MINT/TRANSFER, ACC1155_MINT/TRANSFER RWA 专用: RWA_REGISTER/TRANSFER/FREEZE, COMPLIANCE_*, VALUATION_*, CUSTODY_*, COLLATERAL_*, REDEMPTION_*, INSURANCE_*, GOVERNANCE_* 稳定币: XTZH_MINT/BURN/TRANSFER/UPDATE_RATE, RESERVE_DEPOSIT/WITHDRAW/AUDIT 证券代币: ACC1410_PARTITION, ACC1400_ISSUE/REDEEM, ACC1594_DISTRIBUTE, ACC1643_ADD_DOCUMENT, ACC1644_FREEZE/FORCE_TRANSFER cargo check: 0 errors --- charter-compiler/src/codegen/mod.rs | 44 ++++++++++++++++++++++++++++ charter-compiler/src/parser/ast.rs | 20 +++++++++++++ charter-compiler/src/semantic/mod.rs | 12 ++++++-- 3 files changed, 74 insertions(+), 2 deletions(-) diff --git a/charter-compiler/src/codegen/mod.rs b/charter-compiler/src/codegen/mod.rs index f4036a7..ea28984 100644 --- a/charter-compiler/src/codegen/mod.rs +++ b/charter-compiler/src/codegen/mod.rs @@ -76,8 +76,52 @@ pub enum OpCode { GNACS_ENCODE = 0xE6, GNACS_DECODE = 0xE7, GNACS_VALIDATE = 0xE8, + // ACC 基础代币操作码 ACC20_TRANSFER = 0xEB, ACC20_BALANCE = 0xEF, + ACC20_MINT = 0xA0, + ACC20_BURN = 0xA1, + ACC721_MINT = 0xA2, + ACC721_TRANSFER = 0xA3, + ACC1155_MINT = 0xA4, + ACC1155_TRANSFER = 0xA5, + // RWA 专用操作码 + RWA_REGISTER = 0xD0, + RWA_TRANSFER = 0xD1, + RWA_FREEZE = 0xD2, + RWA_UPDATE_VALUATION = 0xD3, + COMPLIANCE_CHECK = 0xD4, + COMPLIANCE_SEVEN_LAYER = 0xD5, + VALUATION_REQUEST = 0xD6, + VALUATION_GET = 0xD7, + CUSTODY_CREATE = 0xD8, + CUSTODY_TRANSFER = 0xD9, + COLLATERAL_CREATE = 0xDA, + COLLATERAL_LIQUIDATE = 0xDB, + REDEMPTION_REQUEST = 0xDC, + REDEMPTION_COMPLETE = 0xDD, + INSURANCE_ISSUE = 0xDE, + INSURANCE_CLAIM = 0xDF, + GOVERNANCE_PROPOSE = 0xC0, + GOVERNANCE_VOTE = 0xC1, + GOVERNANCE_FINALIZE = 0xC2, + // 稳定币与储备操作码 + XTZH_MINT = 0xC3, + XTZH_BURN = 0xC4, + XTZH_TRANSFER = 0xC5, + XTZH_UPDATE_RATE = 0xC6, + RESERVE_DEPOSIT = 0xC7, + RESERVE_WITHDRAW = 0xC8, + RESERVE_AUDIT = 0xC9, + // 证券代币操作码 + ACC1410_PARTITION = 0xB0, + ACC1410_TRANSFER_BY_PARTITION = 0xB1, + ACC1400_ISSUE = 0xB2, + ACC1400_REDEEM = 0xB3, + ACC1594_DISTRIBUTE = 0xB4, + ACC1643_ADD_DOCUMENT = 0xB5, + ACC1644_FREEZE = 0xB6, + ACC1644_FORCE_TRANSFER = 0xB7, } pub struct CodeGenerator { diff --git a/charter-compiler/src/parser/ast.rs b/charter-compiler/src/parser/ast.rs index 7aec7ed..0b11ae1 100644 --- a/charter-compiler/src/parser/ast.rs +++ b/charter-compiler/src/parser/ast.rs @@ -128,10 +128,30 @@ pub enum TypeAnnotation { GNACSCode, ConstitutionalReceipt, AssetInstance, + // 基础代币协议类型 ACC20, + ACC20Enhanced, ACC721, ACC1155, + ACC20C, + // RWA 专用协议类型 ACCRWA, + ACCCompliance, + ACCValuation, + ACCCustody, + ACCCollateral, + ACCRedemption, + ACCInsurance, + ACCGovernance, + // 稳定币与储备协议类型 + ACCXTZH, + ACCReserve, + // 证券代币协议类型 + ACC1410, + ACC1400, + ACC1594, + ACC1643, + ACC1644, // 数组类型 Array(Box, Option), diff --git a/charter-compiler/src/semantic/mod.rs b/charter-compiler/src/semantic/mod.rs index c8ae3b0..52905a8 100644 --- a/charter-compiler/src/semantic/mod.rs +++ b/charter-compiler/src/semantic/mod.rs @@ -208,8 +208,16 @@ impl SemanticAnalyzer { TypeAnnotation::Bytes | TypeAnnotation::Hash | TypeAnnotation::Timestamp | TypeAnnotation::DID | TypeAnnotation::GNACSCode | TypeAnnotation::ConstitutionalReceipt | TypeAnnotation::AssetInstance | - TypeAnnotation::ACC20 | TypeAnnotation::ACC721 | TypeAnnotation::ACC1155 | - TypeAnnotation::ACCRWA => Ok(()), + TypeAnnotation::ACC20 | TypeAnnotation::ACC20Enhanced | TypeAnnotation::ACC20C | + TypeAnnotation::ACC721 | TypeAnnotation::ACC1155 | + TypeAnnotation::ACCRWA | TypeAnnotation::ACCCompliance | + TypeAnnotation::ACCValuation | TypeAnnotation::ACCCustody | + TypeAnnotation::ACCCollateral | TypeAnnotation::ACCRedemption | + TypeAnnotation::ACCInsurance | TypeAnnotation::ACCGovernance | + TypeAnnotation::ACCXTZH | TypeAnnotation::ACCReserve | + TypeAnnotation::ACC1410 | TypeAnnotation::ACC1400 | + TypeAnnotation::ACC1594 | TypeAnnotation::ACC1643 | + TypeAnnotation::ACC1644 => Ok(()), // 数组类型需要验证元素类型 TypeAnnotation::Array(element_type, _) => self.validate_type(element_type),