Signature creation in Python3

From mojo_puzzler
Revision as of 01:59, 18 November 2023 by Gneale (talk | contribs) (Created page with "==== Return to: Insightful_Comments ==== Russw_ on 20211029 @01:00am EST said: ----------------------- GOT IT! This works for me: <code> basicSpendBundle = await alice.spend_coin(testcoin, pushtx = False, args = spendArgs) // assemble the aggregated BLS signatures on their own... // - in this case there is only 1 sig, so `aggSig == sig1`, and `AugScheme.MPL.aggregate` is // not actually needed here... but just add more to sigs when needed privateKey = alice....")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Return to: Insightful_Comments

Russw_ on 20211029 @01:00am EST said:


GOT IT! This works for me:

basicSpendBundle = await alice.spend_coin(testcoin, pushtx = False, args = spendArgs)

// assemble the aggregated BLS signatures on their own...

// - in this case there is only 1 sig, so `aggSig == sig1`, and `AugScheme.MPL.aggregate` is

// not actually needed here... but just add more to sigs when needed

privateKey = alice.sk()

messageToSign = clvm.casts.int_to_bytes(msg_id)

sig1 = blspy.AugSchemeMPL.sign(privateKey, messageToSign)

sigs = [sig1] # not actually needed with a single sig

aggSig = blspy.AugSchemeMPL.aggregate(sigs) # not actually needed with a single sig

//This is the way to make the combined spend...

// - clean separation between assembling the Coin spends and the agg sigs works well

combinedSpend = cdv.test.SpendBundle(coinSpends, aggSig) # in this single sig case, sig1 would be fine here

//verify both (even though sig1 and combinedSpend.aggregated_signature are the same in this case)

assert blspy.AugSchemeMPL.verify(alice.pk_, messageToSign, sig1)

assert blspy.AugSchemeMPL.verify(alice.pk_, messageToSign, combinedSpend.aggregated_signature)

result = await network.push_tx(combinedSpend)