From 14d07f5bbce59c546d1409a3288a899de2db5727 Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Sat, 17 Aug 2024 08:51:05 +0200 Subject: [PATCH 1/3] operation: change nonce from u8 to u64 rationale: in eltoo the graph can grow up to u48 transactions. Even though not of all would be published, some may, and all of them must be ordered appropriately --- src/operation/commit.rs | 4 ++-- src/operation/operations.rs | 12 ++++++------ src/stl.rs | 4 ++-- src/validation/consignment.rs | 2 +- src/vm/contract.rs | 10 +++++----- stl/AnchoredBundle.vesper | 2 +- stl/RGBCommit@0.1.0.sta | 14 +++++++------- stl/RGBCommit@0.1.0.stl | Bin 16309 -> 16309 bytes stl/RGBCommit@0.1.0.sty | 14 +++++++------- stl/RGBLogic@0.1.0.sta | 20 ++++++++++---------- stl/RGBLogic@0.1.0.stl | Bin 1319 -> 1319 bytes stl/RGBLogic@0.1.0.sty | 10 +++++----- stl/Transition.vesper | 4 ++-- 13 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/operation/commit.rs b/src/operation/commit.rs index 30f88b4a..2a84b383 100644 --- a/src/operation/commit.rs +++ b/src/operation/commit.rs @@ -262,7 +262,7 @@ pub enum TypeCommitment { #[commit_encode(strategy = strict, id = OpId)] pub struct OpCommitment { pub ffv: Ffv, - pub nonce: u8, + pub nonce: u64, pub op_type: TypeCommitment, pub metadata: StrictHash, pub globals: MerkleHash, @@ -287,7 +287,7 @@ impl Genesis { }; OpCommitment { ffv: self.ffv, - nonce: u8::MAX, + nonce: u64::MAX, op_type: TypeCommitment::Genesis(base), metadata: self.metadata.commit_id(), globals: MerkleHash::merklize(&self.globals), diff --git a/src/operation/operations.rs b/src/operation/operations.rs index c7087c6c..e4ed6cf2 100644 --- a/src/operation/operations.rs +++ b/src/operation/operations.rs @@ -229,7 +229,7 @@ pub trait Operation { /// Returns nonce used in consensus ordering of state transitions and /// extensions. - fn nonce(&self) -> u8; + fn nonce(&self) -> u64; /// Returns [`Option::Some`]`(`[`TransitionType`]`)` for transitions or /// [`Option::None`] for genesis and extension operation types @@ -383,7 +383,7 @@ impl StrictDeserialize for Genesis {} pub struct Extension { pub ffv: Ffv, pub contract_id: ContractId, - pub nonce: u8, + pub nonce: u64, pub extension_type: ExtensionType, pub metadata: Metadata, pub globals: GlobalState, @@ -416,7 +416,7 @@ impl PartialOrd for Extension { pub struct Transition { pub ffv: Ffv, pub contract_id: ContractId, - pub nonce: u8, + pub nonce: u64, pub transition_type: TransitionType, pub metadata: Metadata, pub globals: GlobalState, @@ -519,7 +519,7 @@ impl Operation for Genesis { fn contract_id(&self) -> ContractId { ContractId::from_inner(self.id().into_inner()) } #[inline] - fn nonce(&self) -> u8 { u8::MAX } + fn nonce(&self) -> u64 { u64::MAX } #[inline] fn transition_type(&self) -> Option { None } @@ -564,7 +564,7 @@ impl Operation for Extension { fn contract_id(&self) -> ContractId { self.contract_id } #[inline] - fn nonce(&self) -> u8 { self.nonce } + fn nonce(&self) -> u64 { self.nonce } #[inline] fn transition_type(&self) -> Option { None } @@ -609,7 +609,7 @@ impl Operation for Transition { fn contract_id(&self) -> ContractId { self.contract_id } #[inline] - fn nonce(&self) -> u8 { self.nonce } + fn nonce(&self) -> u64 { self.nonce } #[inline] fn transition_type(&self) -> Option { Some(self.transition_type) } diff --git a/src/stl.rs b/src/stl.rs index d798097c..6e6eac25 100644 --- a/src/stl.rs +++ b/src/stl.rs @@ -37,10 +37,10 @@ use crate::{ /// Strict types id for the library providing data types for RGB consensus. pub const LIB_ID_RGB_COMMIT: &str = - "stl:eKthGp7I-52YYwm!-nkAFB7$-0X9zHac-f5pAUKf-V01EhSc#pretend-carpet-caesar"; + "stl:ZMTVCU25-QDo98xR-wI91wcu-ydb7kui-QfZbF$n-0KDS2ow#tuna-safari-design"; /// Strict types id for the library providing data types for RGB consensus. pub const LIB_ID_RGB_LOGIC: &str = - "stl:Pyd01gNn-B3o3lfj-4y6pZ5a-qSgCE1x-0J7gL!C-raacTJs#memphis-martin-jump"; + "stl:LpE2Q!Jf-pKsvjM$-ntKgUld-!zeRRa!-v7l6pzJ-qW2YceY#africa-choice-biology"; fn _rgb_commit_stl() -> Result { LibBuilder::new(libname!(LIB_NAME_RGB_COMMIT), tiny_bset! { diff --git a/src/validation/consignment.rs b/src/validation/consignment.rs index edfd7af9..9499d2e1 100644 --- a/src/validation/consignment.rs +++ b/src/validation/consignment.rs @@ -85,7 +85,7 @@ impl<'op> Operation for OpRef<'op> { } } - fn nonce(&self) -> u8 { + fn nonce(&self) -> u64 { match self { Self::Genesis(op) => op.nonce(), Self::Transition(op) => op.nonce(), diff --git a/src/vm/contract.rs b/src/vm/contract.rs index 508bc8e3..c72c4db0 100644 --- a/src/vm/contract.rs +++ b/src/vm/contract.rs @@ -215,7 +215,7 @@ impl<'op> Operation for OrdOpRef<'op> { } } - fn nonce(&self) -> u8 { + fn nonce(&self) -> u64 { match self { OrdOpRef::Genesis(op) => op.nonce(), OrdOpRef::Transition(op, ..) => op.nonce(), @@ -416,14 +416,14 @@ pub enum OpOrd { Extension { witness: WitnessOrd, // TODO: Consider using extension type here - nonce: u8, + nonce: u64, opid: OpId, }, #[strict_type(tag = 0xFF)] Transition { witness: WitnessOrd, // TODO: Consider using transition type here - nonce: u8, + nonce: u64, opid: OpId, }, } @@ -465,7 +465,7 @@ impl GlobalOrd { idx, } } - pub fn transition(opid: OpId, idx: u16, nonce: u8, witness: WitnessOrd) -> Self { + pub fn transition(opid: OpId, idx: u16, nonce: u64, witness: WitnessOrd) -> Self { Self { op_ord: OpOrd::Transition { witness, @@ -475,7 +475,7 @@ impl GlobalOrd { idx, } } - pub fn extension(opid: OpId, idx: u16, nonce: u8, witness: WitnessOrd) -> Self { + pub fn extension(opid: OpId, idx: u16, nonce: u64, witness: WitnessOrd) -> Self { Self { op_ord: OpOrd::Extension { witness, diff --git a/stl/AnchoredBundle.vesper b/stl/AnchoredBundle.vesper index b32b9ce0..70188880 100644 --- a/stl/AnchoredBundle.vesper +++ b/stl/AnchoredBundle.vesper @@ -29,7 +29,7 @@ TransitionBundle rec value rec Transition ffv is U16 aka=Ffv contractId bytes len=32 aka=ContractId - nonce is U8 + nonce is U64 transitionType is U16 aka=TransitionType metadata map len=0..MAX8 aka=Metadata key is U16 aka=MetaType diff --git a/stl/RGBCommit@0.1.0.sta b/stl/RGBCommit@0.1.0.sta index 2d4f2908..bddb58fd 100644 --- a/stl/RGBCommit@0.1.0.sta +++ b/stl/RGBCommit@0.1.0.sta @@ -1,5 +1,5 @@ -----BEGIN STRICT TYPE LIB----- -Id: stl:eKthGp7I-52YYwm!-nkAFB7$-0X9zHac-f5pAUKf-V01EhSc#pretend-carpet-caesar +Id: stl:ZMTVCU25-QDo98xR-wI91wcu-ydb7kui-QfZbF$n-0KDS2ow#tuna-safari-design Name: RGBCommit Dependencies: StrictTypes#century-comrade-chess, @@ -8,7 +8,7 @@ Dependencies: BPCore#totem-holiday-helena, Std#ralph-blue-lucky, Bitcoin#signal-color-cipher -Check-SHA256: 8447a453dc6b4effc5ed991125084965c4e0b44a09b757502765c9ab2909be75 +Check-SHA256: bca1c6f36dad26f2d0a6f0c23ed8bd7a3c2584bf1f60a4f1ded87de9f8fafa87 2~tNwLvL+uX>Z4!V_T!KNI`QJ|h6;Zj^jB$MPK+?7Lu3>C`4HI)Q*?4^V{}w`aAk91a5aA+<>R2X hQO_4{AcS-HH^7AVzASV8M4NYxyCjHL2PwaO?m?z-)Viz@~C%8KNS}Z0aQ3s^SOqbBwN-D{wl@OCJaMw @@ -135,7 +135,7 @@ x`Tq%|A_kfK&ST81_yLyb98QHbOOpO9&dx0-7pM3Z=O*v*GCA9fL-<|HrZsA`NnJlR3~AEBGG%U@MZ$v b#7;AVr*pw0t#bqZEb0EZDnqB0Z6?XZWsH8I~II?C0;dW+k!*yDqgzlqQwf$39g<|8VYh@Zf9jsa&K>D 0Z6?XZWsH8I~II?C0;dW+k!*yDqgzlqQwf$39g<|8VW;iZgg^CV{}Pm1pxpD002NB00~54bYW9;VRU5$ 0RRX906+i$000000096000000000R^cywiMb7^mG1`7jbW_AJEn^6;37FKqUhx?i3R+Mr!fY&(;2BFL( -m@EZk_srD_V{dMBa$#e1Nn`<^2rNlD$O59e#ogQsB77jPl+h5j^*S;IZf|a5WdHyH4P|(A +m@EZk_srD_V{dMBa$#e1Nn`<^2rNlD$O59e#ogQsB77jPl+h5j^*S;IZf|a5WdHyO4P|(A Wo~n6Z*Ek1aAg5xbsj>g6`?#s5rWnKhSeO?L~x^!;Y#eFP|P}0Z%EzBpbEf7FA*KKfDWJ b8~5DZf#|5baMe=>KFFSbgda38zdDXQ0-0pHK5k@bh=O+>c= @@ -184,7 +184,7 @@ pBQVuYc|6e9yzoWyQ=2m0000000000|Nj60000002~A~WX<<}(aAgAl17U7?{|HTGbYWC^aAgGn0006B O=WapR$**)Wd#8M2mk;;0000000000|Nj60000002u)>lVPs)+VFdvI3ITQGP59r=ivkR6Lh9EroO>_;0000000030000000000B Ph(?sa&l#EV`Xy&0t0PnZU6uR18re=0006EPjEwTZEb0EZDnqB1`7jbW_AJEn^6;37FKqUhx?i3R+Mr! -fY&(;2BFL(m@EZk_srD=Zf|a5WdHyH25)dwd2nR`=kby$tK%HuPpRtMKe5+wDRP}k(QuARKUbDjTz^bE +fY&(;2BFL(m@EZk_srD=Zf|a5WdHyO25)dwd2nR`=kby$tK%HuPpRtMKe5+wDRP}k(QuARKUbDjTz^bE 2yJC_VPs)+VFG#s9p7nv%krpqNM?JbaMiF10COKearHwcS=7M7YzYaI8*bvhMOc?)(rkC#nUD@oPY!h`6Z9%SYt5l1;p3@00000000300000000008a%FR6a&~280(t`--)Viz@~C%8KNS}Z0aQ3s^SOqb BwN-D{wl@OCjNpJN#A(BKKz&v`r;e6DUv<<*U}cD+0ot2U6Id2jc94hrndMfLayEe1ISdA&%p{mB1!VWk)e2*8Zgg^CV{}Pm0iOsgNjk^^ -qPoT1+zTRnAg`3vXv9d*8d@RXy~6c6G6imLZewKt009nka$#@6CZd7@2WdSr&53UoI8eY9A{1GER +qPoT1+zTRnAg`3vXv9d*8d@RXy~6c6G6imLZewKt00<6ra$#@6CZd7@2WdSr&53UoI8eY9A{1GER g--GiI0S#x1is&)M%fmnGH3{GWprU=VRT^u^?FS>S$_F2)vN@Mb6UJ-F(lri_dqerx4lR4>iBsz2WM<= Vqt7^0p25#Yo@G%*b#-tU^&3KX?w7l?~*Sh8@1jRRblZzyas7*aCLNZ0jZ*TSChz_$|Xx}eRkFNAr%^e Ll(1e@}~9=0-ijXfD2)Bb7^O8ZDnqBa{)s3lIz?v1U>x&T2C;PAKlCCveQ{N4udSh#@3Dqj&%ukVQgh? @@ -230,8 +230,8 @@ R5(-fxrUo0Th*%N~j&hfyEy&@Q(SCAn^8 7TS9h9ibhaZ&^Bcn*B*;w|~I;-PD|t>j-IXaCLM|VQ>KznP+6nwW~k}RP!NmuV?G015$>$mV(;bz)!CmQ_M(k?Vd!kfCo{nDM?)_qK{868FUcln*p#G+NdC -Gjy~AR_gVLaFF}DZ0SlZTU?PU0ls0E0RR9100000|Nj60000005L9wuZgXjLX>V>*V`ybV?G015$>$mV(;bz)!CmQ_M(k?Vd!kfCo{nDM?)_qK{868FUc))-~W22H5+ +SDrhMohTRsfLT>C1dS{r3#^{o?N>fE0RR9100000|Nj60000005L9wuZgXjLX>V>*V`ybM?JbaMa-0f+wLWmt%8=p4R=gtK{LClh6Z#kObxUW*hKHnBv9xdAr8 diff --git a/stl/RGBCommit@0.1.0.stl b/stl/RGBCommit@0.1.0.stl index 1a5f499f36a748ebd3bf4fcf8a4fb6afa50e7b23..1ffee9d2025eae086b2dba8f3a72259911e232d2 100644 GIT binary patch delta 66 zcmdm5zqNitwLBxo<{Eiv9w0SC+mjPWJu(SnQn)6OdYa95#h37T*8OueB$yi_LycH^ Ub(FZ*%)9+I+|G1!gn29n02nJ5#Q*>R delta 66 zcmdm5zqNitwLBx^<{Eiv9w0SC+mjPWJu(SnQkcSTl5P@p^^bAM7Ur;5UpopW{N9!G U(n~iwW}+73zQpO9Bg|tt077#bKmY&$ diff --git a/stl/RGBCommit@0.1.0.sty b/stl/RGBCommit@0.1.0.sty index e27705ff..cf78d5c5 100644 --- a/stl/RGBCommit@0.1.0.sty +++ b/stl/RGBCommit@0.1.0.sty @@ -1,5 +1,5 @@ {- - Id: stl:eKthGp7I-52YYwm!-nkAFB7$-0X9zHac-f5pAUKf-V01EhSc#pretend-carpet-caesar + Id: stl:ZMTVCU25-QDo98xR-wI91wcu-ydb7kui-QfZbF$n-0KDS2ow#tuna-safari-design Name: RGBCommit Version: 0.1.0 Description: Consensus commitment layer for RGB smart contracts @@ -211,10 +211,10 @@ data ContractId : [Byte ^ 32] @mnemonic(short-noise-postal) data DataState : [Byte] -@mnemonic(felix-random-mineral) +@mnemonic(reform-garden-ballet) data Extension : ffv Ffv , contractId ContractId - , nonce U8 + , nonce U64 , extensionType ExtensionType , metadata Metadata , globals GlobalState @@ -309,9 +309,9 @@ data Metadata : {MetaType -> ^ ..0xff MetaValue} @mnemonic(source-olga-mirage) data Occurrences : min U16, max U16 -@mnemonic(chamber-provide-veteran) +@mnemonic(survive-citizen-harris) data OpCommitment : ffv Ffv - , nonce U8 + , nonce U64 , opType TypeCommitment , metadata CommitVerify.StrictHash , globals CommitVerify.MerkleHash @@ -371,10 +371,10 @@ data Schema : ffv Ffv @mnemonic(ramirez-patron-simon) data SchemaId : [Byte ^ 32] -@mnemonic(abraham-think-brother) +@mnemonic(michael-exact-eric) data Transition : ffv Ffv , contractId ContractId - , nonce U8 + , nonce U64 , transitionType TransitionType , metadata Metadata , globals GlobalState diff --git a/stl/RGBLogic@0.1.0.sta b/stl/RGBLogic@0.1.0.sta index e4f9de4f..ff50441e 100644 --- a/stl/RGBLogic@0.1.0.sta +++ b/stl/RGBLogic@0.1.0.sta @@ -1,13 +1,13 @@ -----BEGIN STRICT TYPE LIB----- -Id: stl:Pyd01gNn-B3o3lfj-4y6pZ5a-qSgCE1x-0J7gL!C-raacTJs#memphis-martin-jump +Id: stl:LpE2Q!Jf-pKsvjM$-ntKgUld-!zeRRa!-v7l6pzJ-qW2YceY#africa-choice-biology Name: RGBLogic Dependencies: - RGBCommit#pretend-carpet-caesar, + RGBCommit#tuna-safari-design, BPCore#totem-holiday-helena, Bitcoin#signal-color-cipher -Check-SHA256: 2e22050f901819f9ce12a582e13f6119579e01693ebf5921521cd1ca7529137d +Check-SHA256: ec5fbe3beec7e0816d76eb90ea8fb35c931847f2b189f7befdde4e7e16d53e18 -2vSEvOmAmtV*_}rVH%#u=VlnfZ>Nv}LGS$+_c7XW{%HY1pI1#pg(nG8M?ynyZEb0ErdhI3FM~0|p{<6( +2vSEvOmAmtV*_Nw)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+KdTOM?ynyZEb0ErdhI3FM~0|p{<6( sS&)~H{Xkb4j+}v9*QG}Q6KKm20~CnZ*pbzY!hN5_Bp3Y36tDMM#=e#tGI($UA5U3KNx<*C>ja}LTPkk Z)t7=20~CnZ*pY?00DdlT>wB!7L}MA7sFvK#<=RP4S#T1Vv-hhTICs&5fM~jaB^jIPH$voP+@X(Ze?;0 wjY>38tto&d&=e#f#{Gz8SzLEaTf~c{WkYggkPIjuQHS#3Ua|L6d7%qre2Ut&TYD1OfpD bYXCEWpn@q0RpC3vQRIBF~gy)hQg^4yxce6i-HaxmCGKABZpBR?$8gmADBNH?W>M^%H|xc>sh|Dn*!v8 ^Ea7rh?dzC2n+%RZ*X#DbN~eb0;XBAP%ncq!=bH)!l@Cw+&ABgf({>*%N~j&hfyEy&__Ok18HP<00067PjF9iWCQ~M2WMq&WpinB0000131xV6Wo~n6Z*Bkv0|$3$bZ%vHa{=}XBbpbB -LK#dEwxUFHJ){RjtgLvL_X>0rou@Knb#Vo5Z*F5{00035Z*Xa30(h%o8lK4KW*EY6r;q_b@BJ6|G1_td -X#ql?S4~8PCzZ(NdLDIRU(}XWLTZugenOC;Z(5k~zEJnJiX;;E#s3O)a$#@6CZU6=Y2X|?7Ze??G -0rm?cniq>g8B7tjqC|5&qz6Q-tazCB3Um~mr!r)9aRqK~ZewKt009JVaA{-$c&lL=p2+8B7{YI-kO4vO -{TKH!+HwAA0YaZwO+`gXhu%_ym}@7JKPi +T1gE*r}HDX18HP<00067PjF9iWCQ~M2WMq&WpinB0000131xV6Wo~n6Z*Bkv0|$3$bZ%vHa{=}XBbpbB +LK#dEwxUFHJ){RjtgLvL_X>0rou@Knb#Vo5Z*F5{000OCZ*Xa30%XM12~D{`Iz96ga3kGta_pUNxh{zZ +*=%3u(4f-VjFrgddLDIRU(}XWLTZugenOC;Z(5k~zEJnJiX;;E#s3O)a$#@6CZU6=Y2X|?7Ze??G +0rm?cniq>g8B7tjqC|5&qz6Q-tazCB3Um~mr!r)9aRqK~ZewKt00;zcaA{-$WW?18O}RiiJ@XWBBi(Rv +?4579E{O-(Y+vWlpwilmmB{9L9(7`0)Rt93YLV-HLXe?vTA1;^Q1`ZqBog<<3Rh`#Ze??GPjX}g0{{qN a${&|c4cG$00036ZE0?0WB>&L0S>>o?Kom?q=ULN^A!11b?H{wM>P}NCm0qyW47Umu>uKnWo~p~bZK^F 0000AS7~%^Wpi^-Z*v9$254nzXJ~W)00aqiX>Db5bYX39002k diff --git a/stl/RGBLogic@0.1.0.stl b/stl/RGBLogic@0.1.0.stl index d5f211b9ef158199df06135f1198dd317ffeaceb..0af3e32673aecca989b8fa54f4edd691012bd9ac 100644 GIT binary patch delta 180 zcmZ3^wVX?fBgoy!CqF$inK|XiRZicX4pz3GMGBPf78Jdio4-@9ll^8+{PPP7F5T+c zsAb2j&?fa&_iftWHM?_PKW%<~iTMZ1jO}98FQcP8dF_{fR^C3jgE>l_gC)NpGlhwe Rfs-e&C`{I5aUencbO4{JQjP!s delta 180 zcmZ3^wVX?fBgoy!CqF$inYm(hqSU+-&(kCh Date: Sat, 17 Aug 2024 08:54:15 +0200 Subject: [PATCH 2/3] vm: use operation type in ordering If we have two different state transitions of different mined into the same block, which (by mistake) have the same nonce, we still can order them using type. This allows usage of type id value as a way of setting strong ordering overriding nonce values (for instance token issues can be always ordered before spendings) --- src/stl.rs | 2 +- src/vm/contract.rs | 24 ++++++++++++++++++++---- stl/RGBLogic@0.1.0.sta | 30 +++++++++++++++++------------- stl/RGBLogic@0.1.0.stl | Bin 1319 -> 1548 bytes stl/RGBLogic@0.1.0.sty | 8 ++++++-- 5 files changed, 44 insertions(+), 20 deletions(-) diff --git a/src/stl.rs b/src/stl.rs index 6e6eac25..6063f0ba 100644 --- a/src/stl.rs +++ b/src/stl.rs @@ -40,7 +40,7 @@ pub const LIB_ID_RGB_COMMIT: &str = "stl:ZMTVCU25-QDo98xR-wI91wcu-ydb7kui-QfZbF$n-0KDS2ow#tuna-safari-design"; /// Strict types id for the library providing data types for RGB consensus. pub const LIB_ID_RGB_LOGIC: &str = - "stl:LpE2Q!Jf-pKsvjM$-ntKgUld-!zeRRa!-v7l6pzJ-qW2YceY#africa-choice-biology"; + "stl:bioTBozT-NqelHGE-SPbnpMA-XBNSbXZ-6X0dANE-WHVirL8#explain-marvin-bless"; fn _rgb_commit_stl() -> Result { LibBuilder::new(libname!(LIB_NAME_RGB_COMMIT), tiny_bset! { diff --git a/src/vm/contract.rs b/src/vm/contract.rs index c72c4db0..9bf0e2f5 100644 --- a/src/vm/contract.rs +++ b/src/vm/contract.rs @@ -170,11 +170,13 @@ impl<'op> OrdOpRef<'op> { OrdOpRef::Genesis(_) => OpOrd::Genesis, OrdOpRef::Transition(op, _, witness_ord) => OpOrd::Transition { witness: *witness_ord, + ty: op.transition_type, nonce: op.nonce, opid: op.id(), }, OrdOpRef::Extension(op, _, witness_ord) => OpOrd::Extension { witness: *witness_ord, + ty: op.extension_type, nonce: op.nonce, opid: op.id(), }, @@ -415,14 +417,14 @@ pub enum OpOrd { #[strict_type(tag = 0x01)] Extension { witness: WitnessOrd, - // TODO: Consider using extension type here + ty: ExtensionType, nonce: u64, opid: OpId, }, #[strict_type(tag = 0xFF)] Transition { witness: WitnessOrd, - // TODO: Consider using transition type here + ty: TransitionType, nonce: u64, opid: OpId, }, @@ -465,20 +467,34 @@ impl GlobalOrd { idx, } } - pub fn transition(opid: OpId, idx: u16, nonce: u64, witness: WitnessOrd) -> Self { + pub fn transition( + opid: OpId, + idx: u16, + ty: TransitionType, + nonce: u64, + witness: WitnessOrd, + ) -> Self { Self { op_ord: OpOrd::Transition { witness, + ty, nonce, opid, }, idx, } } - pub fn extension(opid: OpId, idx: u16, nonce: u64, witness: WitnessOrd) -> Self { + pub fn extension( + opid: OpId, + idx: u16, + ty: ExtensionType, + nonce: u64, + witness: WitnessOrd, + ) -> Self { Self { op_ord: OpOrd::Extension { witness, + ty, nonce, opid, }, diff --git a/stl/RGBLogic@0.1.0.sta b/stl/RGBLogic@0.1.0.sta index ff50441e..4fb6ec11 100644 --- a/stl/RGBLogic@0.1.0.sta +++ b/stl/RGBLogic@0.1.0.sta @@ -1,11 +1,11 @@ -----BEGIN STRICT TYPE LIB----- -Id: stl:LpE2Q!Jf-pKsvjM$-ntKgUld-!zeRRa!-v7l6pzJ-qW2YceY#africa-choice-biology +Id: stl:bioTBozT-NqelHGE-SPbnpMA-XBNSbXZ-6X0dANE-WHVirL8#explain-marvin-bless Name: RGBLogic Dependencies: RGBCommit#tuna-safari-design, BPCore#totem-holiday-helena, Bitcoin#signal-color-cipher -Check-SHA256: ec5fbe3beec7e0816d76eb90ea8fb35c931847f2b189f7befdde4e7e16d53e18 +Check-SHA256: b4f6b967a70e12d12c5831aa223bd85052f40dbc2bfd5ab3f739e1aa37242f31 2vSEvOmAmtV*_Nw)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+KdTOM?ynyZEb0ErdhI3FM~0|p{<6( sS&)~H{Xkb4j+}v9*QG}Q6KKm20~CnZ*pbzY!hN5_Bp3Y36tDMM#=e#tGI($UA5U3KNx<*C>ja}LTPkk @@ -17,17 +17,21 @@ Wpq+$XJ~Xna$#;`Xh%-ZT+rxDK6vW;JU&?LxLM72H?wDC1Zo}=N}D)4mkLjCa%FT-a&K>D2SRCdV{d70 DJ{*3f84s>#k$1lf7uIEVQ@}wWMxQUb7)_z*=^-NPQ?`2v5jYd+6t@dEhY>7H!Y*UdZb-BpG^u(WnpGh V{&P5bg6}ecT=8d`>?<6$C@F;S3|*6`1-v+nBdcqJ?FPKcnV2wbY*gGVQf%qwlfK-7{9iX4Q|L-q$GzU Mp|h#f#{Gz8SzLEaTf~c{WkYggkPIjuQHS#3Ua|L6d7%qre2Ut&TYD1OfpD -bYXCEWpn@q0RpC3vQRIBF~gy)hQg^4yxce6i-HaxmCGKABZpBR?$8gmADBNH?W>M^%H|xc>sh|Dn*!v8 -^Ea7rh?dzC2n+%RZ*X#DbN~eb0;XBAP%ncq!=bH)!l@Cw+&ABgf({>*%N~j&hfyEy&__`gXhu%_ym}@7JKPi -T1gE*r}HDX18HP<00067PjF9iWCQ~M2WMq&WpinB0000131xV6Wo~n6Z*Bkv0|$3$bZ%vHa{=}XBbpbB -LK#dEwxUFHJ){RjtgLvL_X>0rou@Knb#Vo5Z*F5{000OCZ*Xa30%XM12~D{`Iz96ga3kGta_pUNxh{zZ -*=%3u(4f-VjFrgddLDIRU(}XWLTZugenOC;Z(5k~zEJnJiX;;E#s3O)a$#@6CZU6=Y2X|?7Ze??G -0rm?cniq>g8B7tjqC|5&qz6Q-tazCB3Um~mr!r)9aRqK~ZewKt00;zcaA{-$WW?18O}RiiJ@XWBBi(Rv -?4579E{O-(Y+vWlpwilmmB{9L9(7`0)Rt93YLV-HLXe?vTA1;^Q1`ZqBog<<3Rh`#Ze??GPjX}g0{{qN -a${&|c4cG$00036ZE0?0WB>&L0S>>o?Kom?q=ULN^A!11b?H{wM>P}NCm0qyW47Umu>uKnWo~p~bZK^F -0000AS7~%^Wpi^-Z*v9$254nzXJ~W)00aqiX>Db5bYX39002k +2~tNwLvL+uX>s@(?%#f7ArN-=Rj?7Ns(14peesZgXjLX>V>+d2nT9bsj>g +6`?#s5rWnKhSeO?L~x^!;Y#eFP|P}0Z%Ez^MR;^&ZgXjGZd7@2WtGV0dLDIRU(}XWLTZugenOC;Z(5k~ +zEJnJiX;;E#RN}qNn`~82t;CIP;zf?W&{EO26SO?a%FS?1pxx4S+Y5xm?t-;06{AC=1< +iX(?nAMVf(wjY>38tto&d&=eV=-1_TFpX>@L7b8`Xq3nQ8ri$WPp5w@a4b3LR7M69fMnD+{F6rHCsWOZ=@ba?_~#MKE+ +xj;HS^AvC+-Eea3oo~4=i3iziU+2)E(%Otg6`?#s5rWnKhSeO?L~x^!;Y#eFP|P}0Z%Ez+Zf|a5 +WdHyO1aEL@WCCQw)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+KiRR=6W7=VqesjRYGc!>wZFzp>JB4 +@xD;^wu&SY_r?DTbaG*Cb7^#GZ*Bkv1P6C%bZ%vHa{=}XBbpbBLK#dEwxUFHJ){RjtgLvL_X>0rou@Kn +b#Vf8c>-j_)d@|xKsr716mTQmaB}ROZ@Dgs2ia_2=g^?i+Ke<(53UoI8eY9A{1GERg--GiI0S#x1is&) +M%fmnGH3;EZ*F5{000OCZ*Xa30%XM12~D{`Iz96ga3kGta_pUNxh{zZ*=%3u(4f-VjFrgddLDIRU(}XW +LTZugenOC;Z(5k~zEJnJiX;;E#R^wxbZ%vHb5C+)1OosFVRB<=X?A5~000011#M|=Wn=&a0Raxbxa~M% +Zlr^{H1ibsRCVcA*+(@K+$R_oJY%-uiLn9+bY*UIVRUJBWdHyG3Rh`#Ze??GP;YYv0tRShX=iA3000CD +bZKp6b97;CZ~y>E -----END STRICT TYPE LIB----- diff --git a/stl/RGBLogic@0.1.0.stl b/stl/RGBLogic@0.1.0.stl index 0af3e32673aecca989b8fa54f4edd691012bd9ac..8cf2fe5f58e293e707c4292f39d87203791a68e5 100644 GIT binary patch delta 254 zcmZ3^)x)!)iz%L&!6b-(o$xfNxV@Tx1eNVu{XPj;u+(2+*>``T+fA{hMj3n|MTvRE znI)O|c_EbrsVSv$PAf$h+Bgd~UH#v7Rpzow!Qu%Iz1}PcIAax@?{SaUwW1^ys2-wv z@&p!z$!nPQC@h+N^s)V}gHtOOZ1*&6U(wA!**@?L`)iTS`rMPc8t3p$?qJqnWSP8? hS(BNmq;hgTi=qM{n#g~^=EdlcHFzUsbB`@3d$?(3(`&o43mV41O9tomhilqawK e^3TfKCqHG@U}T=m$D%p8nk5#_@}E4FwHyEj3?7&O diff --git a/stl/RGBLogic@0.1.0.sty b/stl/RGBLogic@0.1.0.sty index cdd6a868..150de4d6 100644 --- a/stl/RGBLogic@0.1.0.sty +++ b/stl/RGBLogic@0.1.0.sty @@ -1,5 +1,5 @@ {- - Id: stl:LpE2Q!Jf-pKsvjM$-ntKgUld-!zeRRa!-v7l6pzJ-qW2YceY#africa-choice-biology + Id: stl:bioTBozT-NqelHGE-SPbnpMA-XBNSbXZ-6X0dANE-WHVirL8#explain-marvin-bless Name: RGBLogic Version: 0.1.0 Description: Consensus logic layer for RGB smart contracts @@ -12,6 +12,8 @@ typelib RGBLogic import RGBCommit#tuna-safari-design + use TransitionType#picture-reflex-brigade + use ExtensionType#apropos-scoop-viva use OpId#picnic-single-gloria import BPCore#totem-holiday-helena @@ -37,12 +39,14 @@ data DbcProof : tapret#1 BPCore.TapretProof @mnemonic(east-sunset-extra) data GlobalOrd : opOrd OpOrd, idx U16 -@mnemonic(france-fish-fortune) +@mnemonic(combat-henry-flood) data OpOrd : genesis () | extension (witness WitnessOrd + , ty RGBCommit.ExtensionType , nonce U64 , opid RGBCommit.OpId) | transition#255 (witness WitnessOrd + , ty RGBCommit.TransitionType , nonce U64 , opid RGBCommit.OpId) From 1f6e98232f8c50250316353d1ecc84f3ccb7c9b8 Mon Sep 17 00:00:00 2001 From: Dr Maxim Orlovsky Date: Thu, 22 Aug 2024 12:22:38 +0200 Subject: [PATCH 3/3] chore: improve typos detection --- _typos.toml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/_typos.toml b/_typos.toml index 0f78bf10..0c6e78b7 100644 --- a/_typos.toml +++ b/_typos.toml @@ -8,8 +8,6 @@ Atack = "Atack" [default] extend-ignore-re = [ - # Don't correct RGB address - "[0-9A-Za-z]{7}-[0-9A-Za-z]{9}-[0-9A-Za-z]{9}-[0-9A-Za-z]{9}-[0-9A-Za-z]{9}-[0-9A-Za-z]{6}", - "rgb:[0-9A-Za-z-]+", - "[0-9A-Za-z]{49}" + # Don't correct URIs + "([a-z]+:)*[$!0-9A-Za-z-]+", ]