Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
77a7979
add introspections opcodes & ArkScriptClosure
louisinger Mar 7, 2025
507d13e
implement disabled opcodes
louisinger Mar 9, 2025
42e53bf
add CHECKSIGFROMSTACK
louisinger Mar 9, 2025
ad80d4f
fix pushScriptPubKey
louisinger Mar 9, 2025
ab48aa4
add arithmetics opcodes
louisinger Mar 9, 2025
7ca72d5
add conversion opcodes
louisinger Mar 9, 2025
34815f2
add secp opcodes
louisinger Mar 9, 2025
7cbc941
add SHA256 streaming opcode
louisinger Mar 10, 2025
1263185
reuse txscript in arkscript package when possible
louisinger Mar 10, 2025
658b7ce
add engine_test.go and opcode_test.go
louisinger Mar 10, 2025
e8da306
add test cases for new opcodes
louisinger Mar 10, 2025
3a1a3be
nolint:staticcheck for ripemd160
louisinger Mar 10, 2025
5fe7ceb
update to tweak-based "arkscript"
louisinger Apr 16, 2025
1ca9e2d
Merge remote-tracking branch arklabs/master into vm
louisinger Apr 16, 2025
c761241
comment TestSendToArkScriptClosure
louisinger Apr 16, 2025
3301225
Merge remote-tracking branch origin/master into vm
louisinger Jun 1, 2025
9661571
fix conflicts
louisinger Jun 1, 2025
696108b
Merge remote-tracking branch origin/master into vm
louisinger Aug 11, 2025
8d54a3d
e2e test fix
louisinger Aug 11, 2025
d04ff2e
lint fix
louisinger Aug 11, 2025
53f7aee
fix error check
louisinger Aug 11, 2025
d39f46b
fix tweak privkey
louisinger Aug 12, 2025
aea902e
Merge remote-tracking branch origin/master into vm
louisinger Aug 12, 2025
d102295
Merge remote-tracking branch origin/master into vm
louisinger Aug 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docker-compose.regtest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ services:
ports:
- "7070:7070"
environment:
- ARKD_LOG_LEVEL=5
- ARKD_LOG_LEVEL=6
- ARKD_NO_MACAROONS=true
- ARKD_VTXO_TREE_EXPIRY=20
- ARKD_SCHEDULER_TYPE=block
Expand Down
21 changes: 11 additions & 10 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@ replace github.com/arkade-os/arkd/pkg/kvdb => ./pkg/kvdb

require (
github.com/ThreeDotsLabs/watermill-sql/v3 v3.1.0
github.com/ark-network/ark/common v0.0.0-20250606113434-241d3e1ec7cb
github.com/arkade-os/arkd/api-spec v0.0.0-20250708133905-efe11fcfce2d
github.com/arkade-os/arkd/pkg/ark-lib v0.0.0-20250708133905-efe11fcfce2d
github.com/arkade-os/arkd/pkg/ark-lib v0.7.1-0.20250811122941-696108b42f69
github.com/arkade-os/arkd/pkg/arkd-wallet v0.0.0-00010101000000-000000000000
github.com/arkade-os/arkd/pkg/kvdb v0.0.0-20250606113434-241d3e1ec7cb
github.com/arkade-os/arkd/pkg/macaroons v0.0.0-00010101000000-000000000000
github.com/arkade-os/go-sdk v0.6.3-0.20250708135236-08d1624ee483
github.com/arkade-os/go-sdk v0.6.3-0.20250811123942-2481769116c7
github.com/btcsuite/btcd/btcec/v2 v2.3.4
github.com/btcsuite/btcwallet/walletdb v1.4.2
github.com/dgraph-io/badger/v4 v4.3.0
Expand All @@ -47,7 +48,7 @@ require (
go.opentelemetry.io/otel/metric v1.34.0
go.opentelemetry.io/otel/sdk v1.34.0
go.opentelemetry.io/otel/sdk/metric v1.34.0
google.golang.org/grpc v1.69.4
google.golang.org/grpc v1.71.0
google.golang.org/protobuf v1.36.6
gopkg.in/macaroon-bakery.v2 v2.3.0
gopkg.in/macaroon.v2 v2.1.0
Expand Down Expand Up @@ -205,18 +206,18 @@ require (
go.uber.org/zap v1.27.0 // indirect
golang.org/x/mod v0.22.0 // indirect
golang.org/x/sync v0.12.0 // indirect
golang.org/x/term v0.29.0 // indirect
golang.org/x/term v0.30.0 // indirect
golang.org/x/time v0.6.0 // indirect
golang.org/x/tools v0.29.0 // indirect
google.golang.org/genproto v0.0.0-20240812133136-8ffd90a71988 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 // indirect
gopkg.in/errgo.v1 v1.0.1 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
lukechampine.com/blake3 v1.3.0 // indirect
modernc.org/gc/v3 v3.0.0-20240801135723-a856999a2e4a // indirect
modernc.org/libc v1.59.3 // indirect
modernc.org/mathutil v1.6.0 // indirect
modernc.org/mathutil v1.7.1 // indirect
modernc.org/memory v1.8.0 // indirect
modernc.org/strutil v1.2.0 // indirect
modernc.org/token v1.1.0 // indirect
Expand Down Expand Up @@ -259,12 +260,12 @@ require (
go.opencensus.io v0.24.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.35.0 // indirect
golang.org/x/crypto v0.36.0 // indirect
golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect
golang.org/x/net v0.36.0
golang.org/x/sys v0.30.0 // indirect
golang.org/x/net v0.37.0
golang.org/x/sys v0.31.0 // indirect
golang.org/x/text v0.23.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
38 changes: 20 additions & 18 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSi
github.com/aead/siphash v1.0.1 h1:FwHfE/T45KPKYuuSAKyyvE+oPWcaQ+CUmFW0bPlM+kg=
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/arkade-os/go-sdk v0.6.3-0.20250708135236-08d1624ee483 h1:/oa4RfDVJASvgaYFfzfPEUQTTJ8e/cs3wfPrTS+rk04=
github.com/arkade-os/go-sdk v0.6.3-0.20250708135236-08d1624ee483/go.mod h1:Lu2hpbFIGuPL01E7njIyqm1FtysJaEvgC4z1k0fznP8=
github.com/ark-network/ark/common v0.0.0-20250606113434-241d3e1ec7cb h1:TvNEA7OJF3CZU5A7wdXOHBTgrIDU4KZ+IBxi6+WEC1g=
github.com/ark-network/ark/common v0.0.0-20250606113434-241d3e1ec7cb/go.mod h1:A8c6gJaMt6wTDkZCPY8UpQmFkHBpBwg+zb1RD/wbRq4=
github.com/arkade-os/go-sdk v0.6.3-0.20250811123942-2481769116c7 h1:6Tnb2msL8XY3daGz86uex3JHNZrJFiE6+KMCh2JK3KM=
github.com/arkade-os/go-sdk v0.6.3-0.20250811123942-2481769116c7/go.mod h1:bAJyRplt/GJD3hcomHlL5Zdiop2ubrcdCY1gzytRKeA=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
Expand Down Expand Up @@ -735,8 +737,8 @@ golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ=
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA=
golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU=
Expand Down Expand Up @@ -777,8 +779,8 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
Expand Down Expand Up @@ -827,16 +829,16 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
Expand Down Expand Up @@ -886,10 +888,10 @@ google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfG
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20240812133136-8ffd90a71988 h1:CT2Thj5AuPV9phrYMtzX11k+XkzMGfRAet42PmoTATM=
google.golang.org/genproto v0.0.0-20240812133136-8ffd90a71988/go.mod h1:7uvplUBj4RjHAxIZ//98LzOvrQ04JBkaixRmCMI29hc=
google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f h1:gap6+3Gk41EItBuyi4XX/bp4oqJ3UwuIMl25yGinuAA=
google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:Ic02D47M+zbarjYYUlK57y316f2MoN0gjAwI3f2S95o=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50=
google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU=
google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE=
google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
Expand All @@ -898,8 +900,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc v1.69.4 h1:MF5TftSMkd8GLw/m0KM6V8CMOCY6NZ1NQDPGFgbTt4A=
google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg=
google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
Expand Down Expand Up @@ -973,8 +975,8 @@ modernc.org/gc/v3 v3.0.0-20240801135723-a856999a2e4a h1:CfbpOLEo2IwNzJdMvE8aiRbP
modernc.org/gc/v3 v3.0.0-20240801135723-a856999a2e4a/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4=
modernc.org/libc v1.59.3 h1:A4QAp1lRSn2/b4aU+wBtq+yeKgq/2BUevrj0p1ZNy2M=
modernc.org/libc v1.59.3/go.mod h1:EY/egGEU7Ju66eU6SBqCNYaFUDuc4npICkMWnU5EE3A=
modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=
modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo=
modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=
modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=
modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E=
modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU=
modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4=
Expand Down
19 changes: 13 additions & 6 deletions internal/core/application/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -448,9 +448,11 @@ func (s *service) SubmitOffchainTx(
return nil, "", "", fmt.Errorf("failed to parse vtxo script: %s", err)
}

arkadeScript := txutils.GetArkadeScript(input)

// validate the vtxo script
if err := vtxoScript.Validate(
s.signerPubkey, s.unilateralExitDelay, s.allowCSVBlockType,
s.signerPubkey, s.unilateralExitDelay, s.allowCSVBlockType, arkadeScript,
); err != nil {
return nil, "", "", fmt.Errorf("invalid vtxo script: %s", err)
}
Expand Down Expand Up @@ -565,6 +567,7 @@ func (s *service) SubmitOffchainTx(
CheckpointTapscript: checkpointTapscript,
RevealedTapscripts: tapscripts,
Amount: int64(vtxo.Amount),
ArkadeScript: arkadeScript,
})
}

Expand Down Expand Up @@ -688,7 +691,8 @@ func (s *service) SubmitOffchainTx(
}

// verify the tapscript signatures
if valid, _, err := s.builder.VerifyTapscriptPartialSigs(signedArkTx); err != nil || !valid {
if valid, _, err := s.builder.VerifyTapscriptPartialSigs(signedArkTx, true); err != nil ||
!valid {
return nil, "", "", fmt.Errorf("invalid ark tx signature(s): %s", err)
}

Expand Down Expand Up @@ -762,7 +766,8 @@ func (s *service) FinalizeOffchainTx(
finalCheckpointTxsMap := make(map[string]string)
for _, checkpoint := range finalCheckpointTxs {
// verify the tapscript signatures
valid, checkpointTxid, err := s.builder.VerifyTapscriptPartialSigs(checkpoint)
// we do not execute the arkade script in checkpoint txs cause we assume the covenant applies to the ark tx
valid, checkpointTxid, err := s.builder.VerifyTapscriptPartialSigs(checkpoint, false)
if err != nil || !valid {
return fmt.Errorf("invalid tx signature: %s", err)
}
Expand Down Expand Up @@ -2235,7 +2240,7 @@ func (s *service) validateBoardingInput(
if err := vtxoScript.Validate(s.signerPubkey, arklib.RelativeLocktime{
Type: s.boardingExitDelay.Type,
Value: s.boardingExitDelay.Value,
}, s.allowCSVBlockType); err != nil {
}, s.allowCSVBlockType, nil); err != nil {
return nil, fmt.Errorf("invalid vtxo script: %s", err)
}

Expand Down Expand Up @@ -2287,8 +2292,10 @@ func (s *service) validateVtxoInput(
}

// validate the vtxo script
// arkade script always nil for now
// TODO: allow arkade script to be passed in intent registration
if err := vtxoScript.Validate(
s.signerPubkey, s.unilateralExitDelay, s.allowCSVBlockType,
s.signerPubkey, s.unilateralExitDelay, s.allowCSVBlockType, nil,
); err != nil {
return fmt.Errorf("invalid vtxo script: %s", err)
}
Expand Down Expand Up @@ -2336,7 +2343,7 @@ func (s *service) verifyForfeitTxsSigs(txs []string) error {
defer wg.Done()

for tx := range jobs {
valid, txid, err := s.builder.VerifyTapscriptPartialSigs(tx)
valid, txid, err := s.builder.VerifyTapscriptPartialSigs(tx, false)
if err != nil {
errChan <- fmt.Errorf("failed to validate forfeit tx %s: %s", txid, err)
return
Expand Down
2 changes: 1 addition & 1 deletion internal/core/application/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ func newBoardingInput(
}

if err := boardingScript.Validate(
signerPubkey, boardingExitDelay, blockTypeCSVAllowed,
signerPubkey, boardingExitDelay, blockTypeCSVAllowed, nil,
); err != nil {
return nil, err
}
Expand Down
5 changes: 4 additions & 1 deletion internal/core/ports/tx_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ type TxBuilder interface {
vtxoTreeExpiry *arklib.RelativeLocktime, batchOutputs SweepableBatchOutput, err error,
)
FinalizeAndExtract(tx string) (txhex string, err error)
VerifyTapscriptPartialSigs(tx string) (valid bool, txid string, err error)
VerifyTapscriptPartialSigs(
tx string,
withArkadeScriptInterpreter bool,
) (valid bool, txid string, err error)
VerifyAndCombinePartialTx(dest string, src string) (string, error)
CountSignedTaprootInputs(tx string) (int, error)
}
3 changes: 2 additions & 1 deletion internal/infrastructure/live-store/live_store_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -468,8 +468,9 @@ func (m *mockedTxBuilder) FinalizeAndExtract(tx string) (txhex string, err error

func (m *mockedTxBuilder) VerifyTapscriptPartialSigs(
tx string,
withArkadeScriptInterpreter bool,
) (valid bool, txid string, err error) {
args := m.Called(tx)
args := m.Called(tx, withArkadeScriptInterpreter)
res0 := args.Get(0).(bool)
res1 := args.Get(1).(string)
return res0, res1, args.Error(2)
Expand Down
Loading
Loading