Skip to content

Commit b570730

Browse files
committed
Support for LMSig field, including proper multisig resolution at write time and transaction filtering/serving via API.
1 parent 8293b85 commit b570730

File tree

12 files changed

+476
-278
lines changed

12 files changed

+476
-278
lines changed

api/converter_utils.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -185,10 +185,11 @@ func lsigToTransactionLsig(lsig sdk.LogicSig) *generated.TransactionSignatureLog
185185
}
186186

187187
ret := generated.TransactionSignatureLogicsig{
188-
Args: &args,
189-
Logic: lsig.Logic,
190-
MultisigSignature: msigToTransactionMsig(lsig.Msig),
191-
Signature: sigToTransactionSig(lsig.Sig),
188+
Args: &args,
189+
Logic: lsig.Logic,
190+
LogicMultisigSignature: msigToTransactionMsig(lsig.LMsig),
191+
MultisigSignature: msigToTransactionMsig(lsig.Msig),
192+
Signature: sigToTransactionSig(lsig.Sig),
192193
}
193194

194195
return &ret

api/generated/common/routes.go

Lines changed: 204 additions & 203 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/generated/common/types.go

Lines changed: 12 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/generated/v2/routes.go

Lines changed: 61 additions & 60 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/generated/v2/types.go

Lines changed: 12 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/handlers_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,12 @@ func TestTransactionParamToTransactionFilter(t *testing.T) {
8989
idb.TransactionFilter{},
9090
[]string{errUnknownSigType, errUnknownTxType},
9191
},
92+
{
93+
"Valid MSig type",
94+
generated.SearchForTransactionsParams{SigType: (*generated.SearchForTransactionsParamsSigType)(strPtr("msig"))},
95+
idb.TransactionFilter{SigType: "msig", Limit: defaultOpts.DefaultTransactionsLimit},
96+
nil,
97+
},
9298
{
9399
"As many fields as possible",
94100
generated.SearchForTransactionsParams{

api/indexer.oas2.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2638,6 +2638,9 @@
26382638
"multisig-signature": {
26392639
"$ref": "#/definitions/TransactionSignatureMultisig"
26402640
},
2641+
"logic-multisig-signature": {
2642+
"$ref": "#/definitions/TransactionSignatureLogicMultisig"
2643+
},
26412644
"signature": {
26422645
"description": "\\[sig\\] ed25519 signature.",
26432646
"type": "string",
@@ -2646,7 +2649,7 @@
26462649
}
26472650
},
26482651
"TransactionSignatureMultisig": {
2649-
"description": "\\[msig\\] structure holding multiple subsignatures.\n\nDefinition:\ncrypto/multisig.go : MultisigSig",
2652+
"description": "structure holding multiple subsignatures.\n\nDefinition:\ncrypto/multisig.go : MultisigSig",
26502653
"type": "object",
26512654
"properties": {
26522655
"subsignature": {
@@ -2666,6 +2669,14 @@
26662669
}
26672670
}
26682671
},
2672+
"TransactionSignatureLogicMultisig": {
2673+
"description": "\\[lmsig\\] Accepted on transactions if consensus param LogicSigLMsig=true",
2674+
"allOf": [
2675+
{
2676+
"$ref": "#/definitions/TransactionSignatureMultisig"
2677+
}
2678+
]
2679+
},
26692680
"TransactionSignatureMultisigSubsignature": {
26702681
"type": "object",
26712682
"properties": {

api/indexer.oas3.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2559,6 +2559,14 @@
25592559
},
25602560
"type": "object"
25612561
},
2562+
"TransactionSignatureLogicMultisig": {
2563+
"allOf": [
2564+
{
2565+
"$ref": "#/components/schemas/TransactionSignatureMultisig"
2566+
}
2567+
],
2568+
"description": "\\[lmsig\\] Accepted on transactions if consensus param LogicSigLMsig=true"
2569+
},
25622570
"TransactionSignatureLogicsig": {
25632571
"description": "\\[lsig\\] Programatic transaction signature.\n\nDefinition:\ndata/transactions/logicsig.go",
25642572
"properties": {
@@ -2575,6 +2583,9 @@
25752583
"pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
25762584
"type": "string"
25772585
},
2586+
"logic-multisig-signature": {
2587+
"$ref": "#/components/schemas/TransactionSignatureLogicMultisig"
2588+
},
25782589
"multisig-signature": {
25792590
"$ref": "#/components/schemas/TransactionSignatureMultisig"
25802591
},
@@ -2591,7 +2602,7 @@
25912602
"type": "object"
25922603
},
25932604
"TransactionSignatureMultisig": {
2594-
"description": "\\[msig\\] structure holding multiple subsignatures.\n\nDefinition:\ncrypto/multisig.go : MultisigSig",
2605+
"description": "structure holding multiple subsignatures.\n\nDefinition:\ncrypto/multisig.go : MultisigSig",
25952606
"properties": {
25962607
"subsignature": {
25972608
"description": "\\[subsig\\] holds pairs of public key and signatures.",

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ toolchain go1.23.3
66

77
require (
88
github.com/algorand/avm-abi v0.2.0
9-
github.com/algorand/go-algorand-sdk/v2 v2.10.1-0.20250826231952-d3f0b201f480
9+
github.com/algorand/go-algorand-sdk/v2 v2.10.1-0.20250829133552-9b5242cd2eb6
1010
github.com/algorand/go-codec/codec v1.1.10
1111
github.com/algorand/oapi-codegen v1.12.0-algorand.0
1212
github.com/davecgh/go-spew v1.1.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF
6262
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
6363
github.com/algorand/avm-abi v0.2.0 h1:bkjsG+BOEcxUcnGSALLosmltE0JZdg+ZisXKx0UDX2k=
6464
github.com/algorand/avm-abi v0.2.0/go.mod h1:+CgwM46dithy850bpTeHh9MC99zpn2Snirb3QTl2O/g=
65-
github.com/algorand/go-algorand-sdk/v2 v2.10.1-0.20250826231952-d3f0b201f480 h1:TVdCQnEF5otHX1miKtKTcWATcyxq++wddR4iJUMs01Q=
66-
github.com/algorand/go-algorand-sdk/v2 v2.10.1-0.20250826231952-d3f0b201f480/go.mod h1:D6iKT87/N6ajNpN7uMYPC9/RsOo2BbxnDfvh81E3hOM=
65+
github.com/algorand/go-algorand-sdk/v2 v2.10.1-0.20250829133552-9b5242cd2eb6 h1:F/n7SH3Jo4L1XGfJ/3gtSTaoo5h06YMyCvxbnKw3AQ4=
66+
github.com/algorand/go-algorand-sdk/v2 v2.10.1-0.20250829133552-9b5242cd2eb6/go.mod h1:D6iKT87/N6ajNpN7uMYPC9/RsOo2BbxnDfvh81E3hOM=
6767
github.com/algorand/go-codec/codec v1.1.10 h1:zmWYU1cp64jQVTOG8Tw8wa+k0VfwgXIPbnDfiVa+5QA=
6868
github.com/algorand/go-codec/codec v1.1.10/go.mod h1:YkEx5nmr/zuCeaDYOIhlDg92Lxju8tj2d2NrYqP7g7k=
6969
github.com/algorand/oapi-codegen v1.12.0-algorand.0 h1:W9PvED+wAJc+9EeXPONnA+0zE9UhynEqoDs4OgAxKhk=

0 commit comments

Comments
 (0)