awesome! nice work!
NIT: If one of the sends inside the whole MPMA message breaks consensus rules, that specific transaction must be silently ignored as to not prevent excution of the rest of the transactions.
I think should be worded: If one of the sends inside the whole MPMA message breaks consensus rules, the transaction as a whole is considered invalid.
no reason to mention any interaction with “the rest of the transactions” since that is how it always works in CP and mentioning it implies there’s something different than the default behavior.
NIT: Asset Signaling Bit 1
in the table should be Asset Signaling Bit M
I think?
NIT: assuming the milestones are ordered, from experience I’d also say the more logical way is to do the CLI/RPC methods last, unless you literally leave the body of the methods completely empty and only put a log line in there it’s impossible to do anything of the sort without having the other stuff working.
MAJOR: wondering if we need any constraints, bitcoin tx fees normally protect us against compute intensive payloads because there’s a (rough) correlation between work needed to process a TX and it’s size in bytes (edited)
this would allow humongous sends at a fraction of the cost because normally every 1 SEND has the minimum cost of 1 P2PKH input, 1 P2PKH output, 1 OPRETURN output, 200ish bytes (realistically you also need a change output so 270ish bytes), of which only ~40 bytes are actually used for the SEND (output + OPRETURN).
with some quick napkin calculations you could send 100 assets to 1 recipient with 1100ish bytes (only 4% of the cost of doing 100 old school sends).
oldschool 1 send results in about 300 bytes orso being stored (transactions + sends + credits + debits, rough estimate), roughly same size as the tx
broadcasts are also roughly 1=1 size:dbsize, DEX orders or bets probably result in slightly more dbsize than size of the tx
a 100x CIP10 send tx (~1100 byte) would expand to roughly 25kb (transactions=180 + cip10sends=1000 + ((credits=120 + debits=120) × 100))
MAJOR: would help if example would be example of sending 2 assets, also I think the encoded example is incorrect.
and the more extensive example has 0400
as LUX length, am I an idiot or is that 1024?
MAJOR: in the AssetList
how do I know how many bits the Z recipients
and LUT Idx Z
are?