diff --git a/go.mod b/go.mod index 2e91a2c1a..9a9a91a79 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/statechannels/go-nitro go 1.21 require ( - github.com/ethereum/go-ethereum v1.12.0 + github.com/ethereum/go-ethereum v1.12.2 github.com/google/go-cmp v0.5.9 github.com/multiformats/go-multiaddr v0.11.0 github.com/nats-io/nats-server/v2 v2.9.10 @@ -15,6 +15,8 @@ require ( github.com/BurntSushi/toml v1.3.2 github.com/golang-jwt/jwt/v5 v5.0.0 github.com/libp2p/go-libp2p-kad-dht v0.24.2 + github.com/mdehoog/go-bundler-client v0.0.1 + github.com/stackup-wallet/stackup-bundler v0.6.13 github.com/tidwall/buntdb v1.2.10 github.com/urfave/cli/v2 v2.25.3 @@ -24,6 +26,7 @@ require ( github.com/DataDog/zstd v1.5.2 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect + github.com/bits-and-blooms/bitset v1.7.0 // indirect github.com/btcsuite/btcd v0.22.0-beta // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce // indirect @@ -31,15 +34,19 @@ require ( github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 // indirect github.com/cockroachdb/redact v1.1.3 // indirect + github.com/consensys/bavard v0.1.13 // indirect + github.com/consensys/gnark-crypto v0.10.0 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/crate-crypto/go-kzg-4844 v0.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect - github.com/deckarep/golang-set/v2 v2.1.0 // indirect + github.com/deckarep/golang-set/v2 v2.3.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/elastic/gosigar v0.14.2 // indirect + github.com/ethereum/c-kzg-4844 v0.3.1 // indirect github.com/flynn/noise v1.0.0 // indirect github.com/francoispqt/gojay v1.2.13 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect @@ -47,6 +54,9 @@ require ( github.com/getsentry/sentry-go v0.18.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.12.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/gofrs/flock v0.8.1 // indirect @@ -73,6 +83,7 @@ require ( github.com/koron/go-ssdp v0.0.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect + github.com/leodido/go-urn v1.2.2 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-cidranger v1.1.0 // indirect github.com/libp2p/go-flow-metrics v0.1.0 // indirect @@ -92,6 +103,8 @@ require ( github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect github.com/minio/highwayhash v1.0.2 // indirect github.com/minio/sha256-simd v1.0.1 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/mr-tron/base58 v1.2.0 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect github.com/multiformats/go-base36 v0.2.0 // indirect @@ -125,6 +138,7 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/status-im/keycard-go v0.2.0 // indirect + github.com/supranational/blst v0.3.11 // indirect github.com/tidwall/btree v1.6.0 // indirect github.com/tidwall/gjson v1.14.4 // indirect github.com/tidwall/grect v0.1.4 // indirect @@ -148,12 +162,13 @@ require ( golang.org/x/net v0.14.0 // indirect golang.org/x/sync v0.3.0 // indirect golang.org/x/text v0.12.0 // indirect - golang.org/x/time v0.0.0-20220922220347-f3bd1da661af // indirect + golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect gonum.org/v1/gonum v0.13.0 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect + rsc.io/tmplfunc v0.0.3 // indirect ) require ( @@ -166,7 +181,7 @@ require ( github.com/google/uuid v1.3.0 // indirect github.com/gorilla/websocket v1.5.0 github.com/holiman/bloomfilter/v2 v2.0.3 // indirect - github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c // indirect + github.com/holiman/uint256 v1.2.3 // indirect github.com/libp2p/go-libp2p v0.30.0 github.com/mattn/go-runewidth v0.0.9 // indirect github.com/miguelmota/go-ethereum-hdwallet v0.1.1 diff --git a/go.sum b/go.sum index 3851270fd..a601fad21 100644 --- a/go.sum +++ b/go.sum @@ -85,6 +85,8 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bits-and-blooms/bitset v1.7.0 h1:YjAGVd3XmtK9ktAbX8Zg2g2PwLIMjGREZJHlV4j7NEo= +github.com/bits-and-blooms/bitset v1.7.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= @@ -111,6 +113,7 @@ github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOC github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= @@ -136,7 +139,11 @@ github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5w github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= +github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= +github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= +github.com/consensys/gnark-crypto v0.10.0 h1:zRh22SR7o4K35SoNqouS9J/TKHTyU2QWaj5ldehyXtA= +github.com/consensys/gnark-crypto v0.10.0/go.mod h1:Iq/P3HHl0ElSjsg2E1gsMwhAyxnxoKK5nVyZKd+/KhU= github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= @@ -152,6 +159,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/crate-crypto/go-kzg-4844 v0.3.0 h1:UBlWE0CgyFqqzTI+IFyCzA7A3Zw4iip6uzRv5NIXG0A= +github.com/crate-crypto/go-kzg-4844 v0.3.0/go.mod h1:SBP7ikXEgDnUPONgm33HtuDZEDtWa3L4QtN1ocJSEQ4= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -161,14 +170,19 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= -github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= -github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/deckarep/golang-set/v2 v2.3.0 h1:qs18EKUfHm2X9fA50Mr/M5hccg2tNnVqsiBImnyDs0g= +github.com/deckarep/golang-set/v2 v2.3.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= +github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= +github.com/dgraph-io/badger/v3 v3.2103.5 h1:ylPa6qzbjYRQMU6jokoj4wzcaweHylt//CH0AKt0akg= +github.com/dgraph-io/badger/v3 v3.2103.5/go.mod h1:4MPiseMeDQ3FNCYwRbbcBOGJLf5jsE0PPFzRiKjtcdw= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= @@ -179,6 +193,7 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= +github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= @@ -192,9 +207,11 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= +github.com/ethereum/c-kzg-4844 v0.3.1 h1:sR65+68+WdnMKxseNWxSJuAv2tsUrihTpVBTfM/U5Zg= +github.com/ethereum/c-kzg-4844 v0.3.1/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/ethereum/go-ethereum v1.10.4/go.mod h1:nEE0TP5MtxGzOMd7egIrbPJMQBnhVU3ELNxhBglIzhg= -github.com/ethereum/go-ethereum v1.12.0 h1:bdnhLPtqETd4m3mS8BGMNvBTf36bO5bx/hxE2zljOa0= -github.com/ethereum/go-ethereum v1.12.0/go.mod h1:/oo2X/dZLJjf2mJ6YT9wcWxa4nNJDBKDBU6sFIpx1Gs= +github.com/ethereum/go-ethereum v1.12.2 h1:eGHJ4ij7oyVqUQn48LBz3B7pvQ8sV0wGJiIE6gDq/6Y= +github.com/ethereum/go-ethereum v1.12.2/go.mod h1:1cRAEV+rp/xX0zraSCBnu9Py3HQ+geRMj3HdR+k0wfI= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -241,6 +258,14 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.12.0 h1:E4gtWgxWxp8YSxExrQFv5BpCahla0PVF2oTTEYaWQGI= +github.com/go-playground/validator/v10 v10.12.0/go.mod h1:hCAPuzYvKdP33pxWa+2+6AIKXEKqjIUyqsNCtbsSJrA= github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -276,6 +301,8 @@ github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVI github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -312,6 +339,8 @@ github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85q github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= +github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -337,6 +366,7 @@ github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b h1:h9U78+dx9a4BKdQkBBos92HalKpaGKHrp+3Uo6yTodo= github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.5/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= @@ -368,11 +398,13 @@ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7 h1:3JQNjnMRil1yD0IfZKHF9GxxWKDJGj8I0IqOUol//sw= +github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= -github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c h1:DZfsyhDK1hnSS5lH8l+JggqzEleHteTYfutAiVlSUM8= -github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= +github.com/holiman/uint256 v1.2.3 h1:K8UWO1HUJpRMXBxbmaY1Y8IAMZC/RsKB+ArEnnK4l5o= +github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huin/goupnp v1.0.1-0.20210310174557-0ca763054c88/go.mod h1:nNs7wvRfN1eKaMknBydLNQU6146XQim8t4h+q90biWo= github.com/huin/goupnp v1.2.0 h1:uOKW26NG1hsSSbXIZ1IR7XP9Gjd1U8pnLaCMgntmkmY= @@ -477,7 +509,10 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/leodido/go-urn v1.2.2 h1:7z68G0FCGvDk646jz1AelTYNYWrTNm0bEcFAo147wt4= +github.com/leodido/go-urn v1.2.2/go.mod h1:kUaIbLZWttglzwNuG0pgsh5vuV6u2YcGBYz1hIPjtOQ= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= @@ -539,6 +574,8 @@ github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpe github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mdehoog/go-bundler-client v0.0.1 h1:56LkcNRZrXbeopJmMzTJU2ZLx+TQwwWnahV+PTwh4AY= +github.com/mdehoog/go-bundler-client v0.0.1/go.mod h1:0b290ygXE1G3KFR2y9uAV54OdaRkZpQroqKCktkskSw= github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= @@ -561,10 +598,13 @@ github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dz github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -711,6 +751,7 @@ github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/rwtodd/Go.Sed v0.0.0-20210816025313-55464686f9ef/go.mod h1:8AEUvGVi2uQ5b24BIhcr0GCcpd/RNAFWaN2CJFrWIIQ= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= @@ -761,6 +802,8 @@ github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tL github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/stackup-wallet/stackup-bundler v0.6.13 h1:3W8J+WgKHNzFs0bveH5iRoLlfDdB5YidyH8fp+1FcGo= +github.com/stackup-wallet/stackup-bundler v0.6.13/go.mod h1:Much2K6oBu17CAz54rKWX0hgEv2bwb7JVw9YQJJ0Dbs= github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= @@ -778,8 +821,11 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= +github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= @@ -1070,8 +1116,8 @@ golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1236,5 +1282,7 @@ lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/internal/chain/chain.go b/internal/chain/chain.go index 67ade6504..f635e4ecb 100644 --- a/internal/chain/chain.go +++ b/internal/chain/chain.go @@ -3,6 +3,9 @@ package chain import ( "context" "fmt" + "log" + "log/slog" + "math/big" "os" "os/exec" "time" @@ -52,7 +55,8 @@ func DeployContracts(ctx context.Context, chainUrl, chainAuthToken, chainPk stri if err != nil { return types.Address{}, types.Address{}, types.Address{}, err } - + transferEth(ethClient, txSubmitter, na, big.NewInt(1000000000000000000)) + transferEth(ethClient, txSubmitter, common.HexToAddress("0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789"), big.NewInt(1000000000000000000)) return } @@ -78,3 +82,32 @@ func deployContract[T contractBackend](ctx context.Context, name string, ethClie fmt.Printf("%s successfully deployed to %s\n", name, a.String()) return a, nil } + +func transferEth(client *ethclient.Client, txSubmitter *bind.TransactOpts, to types.Address, amount *big.Int) { + slog.Info("Transferring eth", "to", to, "from", txSubmitter.From, "amount", amount) + nonce, err := client.PendingNonceAt(context.Background(), txSubmitter.From) + if err != nil { + log.Fatal(err) + } + + gasLimit := uint64(21000) + gasPrice, err := client.SuggestGasPrice(context.Background()) + if err != nil { + log.Fatal(err) + } + + tx := ethTypes.NewTransaction(nonce, to, amount, gasLimit, gasPrice, nil) + signedTx, err := txSubmitter.Signer(txSubmitter.From, tx) + if err != nil { + log.Fatal(err) + } + + err = client.SendTransaction(context.Background(), signedTx) + if err != nil { + log.Fatal(err) + } + _, err = bind.WaitMined(context.Background(), client, signedTx) + if err != nil { + log.Fatal(err) + } +} diff --git a/node/engine/chainservice/adjudicator/NitroAdjudicator.go b/node/engine/chainservice/adjudicator/NitroAdjudicator.go index 4e20b066d..b84ff025f 100644 --- a/node/engine/chainservice/adjudicator/NitroAdjudicator.go +++ b/node/engine/chainservice/adjudicator/NitroAdjudicator.go @@ -91,10 +91,25 @@ type INitroTypesVariablePart struct { IsFinal bool } +// UserOperation is an auto generated low-level Go binding around an user-defined struct. +type UserOperation struct { + Sender common.Address + Nonce *big.Int + InitCode []byte + CallData []byte + CallGasLimit *big.Int + VerificationGasLimit *big.Int + PreVerificationGas *big.Int + MaxFeePerGas *big.Int + MaxPriorityFeePerGas *big.Int + PaymasterAndData []byte + Signature []byte +} + // NitroAdjudicatorMetaData contains all meta data concerning the NitroAdjudicator contract. var NitroAdjudicatorMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialHoldings\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalHoldings\",\"type\":\"uint256\"}],\"name\":\"AllocationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newTurnNumRecord\",\"type\":\"uint48\"}],\"name\":\"ChallengeCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"ChallengeRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"}],\"name\":\"Concluded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationHoldings\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"}],\"name\":\"Reclaimed\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature\",\"name\":\"challengerSig\",\"type\":\"tuple\"}],\"name\":\"challenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"sourceAllocations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"targetAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"indexOfTargetInSource\",\"type\":\"uint256\"}],\"name\":\"compute_reclaim_effects\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialHoldings\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"}],\"name\":\"compute_transfer_effects_and_interactions\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"newAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"allocatesOnlyZeros\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"exitAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"totalPayouts\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"conclude\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"concludeAndTransferAllAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expectedHeld\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"holdings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChannelId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sourceStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"sourceOutcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceAssetIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOfTargetInSource\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"targetStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"targetOutcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"targetAssetIndex\",\"type\":\"uint256\"}],\"internalType\":\"structIMultiAssetHolder.ReclaimArgs\",\"name\":\"reclaimArgs\",\"type\":\"tuple\"}],\"name\":\"reclaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"stateIsSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"statusOf\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"fromChannelId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"outcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"transferAllAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"}],\"name\":\"unpackStatus\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"turnNumRecord\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"},{\"internalType\":\"uint160\",\"name\":\"fingerprint\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x6080806040523461001657613d2b908161001c8239f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816311e9f178146118f8578163166e56cd146118a35781632fb1d2701461158d5781633033730e1461132857816331afa0b414611049578163552cfa5014610fc2578163566d54c614610f575781635685b7dc14610cc05781636d2a9c9214610bc45781638286a0601461080d578163c7df14e2146107e3578163d3c4e738146104e2578163ec346235146100d7575063ee049b50146100b957600080fd5b346100d2576100d06100ca36612103565b90612419565b005b600080fd5b346100d2576100f1906100e936612103565b809391612419565b915151906100fe836138a1565b61010782613cd8565b6101448460005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b939150506040519260209384810193600085526040820152604081526101698161198a565b73ffffffffffffffffffffffffffffffffffffffff809481925190201691160361049f5750600191835191601f196101b96101a385611a68565b946101b16040519687611a45565b808652611a68565b018260005b828110610460575050506101d28551613985565b6101dc8651613985565b9060005b87518110156102c4576101f3818961261c565b518860408201519161025487610209868561261c565b515116938460005260018a528d6040600020906000528a52604060002054610231878961261c565b5261023c868861261c565b51906040519161024b83611a29565b60008352612f57565b909491156102bb575b91604061027e8880989796948e966102786102b69c8f61261c565b5261261c565b5101520151604051926102908461198a565b83528883015260408201526102a5828961261c565b526102b0818861261c565b506125a3565b6101e0565b60009c5061025d565b50919095879460005b825181101561038e5780877fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a8b610315848961030c610389988b61261c565b5151169261261c565b518160005260018b526040600020846000528b526103396040600020918254612f4a565b9055610345848a61261c565b519060005260018a526040600020836000528a526040600020549061038160405192839287846040919493926060820195825260208201520152565b0390a26125a3565b6102cd565b5085858389156103d45750600091825252600060408120555b60005b81518110156100d057806103ca6103c46103cf938561261c565b51613649565b6125a3565b6103aa565b906104516103e3600093613cd8565b6104208560005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b50919060405192610430846119d5565b65ffffffffffff809216845216848301528460408301526060820152613a1d565b928252526040600020556103a7565b60405161046c8161198a565b6000815260405161047c816119f1565b6000815260609081858201528483015260408201528282880101520183906101be565b606490836040519162461bcd60e51b8352820152601560248201527f696e636f72726563742066696e6765727072696e7400000000000000000000006044820152fd5b346100d25760206003199080823601126100d25782359167ffffffffffffffff938484116100d257610100809285360301126100d257604051918201828110868211176107b557604052838101358252828201906024850135825260448501358681116100d25761055890823691880101611aaa565b906040840191825260608401956064810135875260808501906084810135825260a086019860a48201358a5260c48201359081116100d2576105a160e491853691850101611aaa565b918260c089015201359860e08701938a85526105dc885196516105d78c51986105c9816138a1565b8a518351848f0120906137f1565b612c3e565b80966105e785612c3e565b9c73ffffffffffffffffffffffffffffffffffffffff91600260ff604061062b816106208689610617828d61261c565b5151169a61261c565b5101518c519061261c565b5101511603610772578e969594939291610658604061064d610660948e61261c565b5101518a519061261c565b51519761261c565b5151160361072f57506106d08a9b60406106c57f4d3754632451ebba9812a9305e7bca17b67a17186a5cff93d2e9ae1b01e3d27b9d6106be888f6106db9b996107239f9e9d9b996106b1889b6138a1565b51918151910120906137f1565b518961261c565b51015194519061261c565b510151905191613310565b9184519260406106ec8a518561261c565b510152519060405161071a8161070c898201948a865260408301906131e1565b03601f198101835282611a45565b51902091613900565b519251604051908152a2005b6064908a6040519162461bcd60e51b8352820152601d60248201527f746172676574417373657420213d2067756172616e74656541737365740000006044820152fd5b6064858e6040519162461bcd60e51b8352820152601a60248201527f6e6f7420612067756172616e74656520616c6c6f636174696f6e0000000000006044820152fd5b6041827f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b346100d25760206003193601126100d2573560005260006020526020604060002054604051908152f35b346100d25760c06003193601126100d25767ffffffffffffffff9080358281116100d25761083e9036908301611e6c565b906024358381116100d25761085690369083016120e5565b926044359081116100d25761086e9036908301611f34565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126100d2576040516108a48161198a565b60643560ff811681036100d2578152608435602082015260a43560408201526108cc84613baf565b9365ffffffffffff60408451015116936108e5866139b6565b6108ee81612147565b610b935765ffffffffffff6109368760005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b5050168510610b4f575b61095461094e858985612783565b90612180565b6109c1610962855184613c61565b936109bc8451916040516020810190888252604080820152600960608201527f666f7263654d6f766500000000000000000000000000000000000000000000006080820152608081526109b481611a0d565b519020613ad1565b612630565b15610b0b57506109e565ffffffffffff60608301511665ffffffffffff42166121b0565b956040519665ffffffffffff60608901911688526060602089015281518091526080880190602060808260051b8b01019301916000905b828210610ac25750505050610a8165ffffffffffff60608194897f0aa12461ee6c137332989aa12cec79f4772ab2c1a8732a382aada7e9f3ec9d348c80610a73610aae9e9f99610a899a810360408401528d6123a9565b0390a20151168342166121b0565b935151613cd8565b9260405194610a97866119d5565b855216602084015260408301526060820152613a1d565b906000526000602052604060002055600080f35b90919293602080610afd837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f6001960301865288516123a9565b960192019201909291610a1c565b60649060206040519162461bcd60e51b8352820152601f60248201527f4368616c6c656e676572206973206e6f742061207061727469636970616e74006044820152fd5b60649060206040519162461bcd60e51b8352820152601860248201527f7475726e4e756d5265636f7264206465637265617365642e00000000000000006044820152fd5b6001610b9e876139b6565b610ba781612147565b03610bbb57610bb68587612a7d565b610940565b610bb686612b14565b346100d25760606003193601126100d25767ffffffffffffffff81358181116100d257610bf49036908401611e6c565b916024358281116100d257610c0c90369083016120e5565b926044359283116100d257610c7e61094e610c4d6020947f07da0a0674fb921e484018c8b81d80e292745e5d8ed134b580c8b9c631c5e9e096369101611f34565b610c5684613baf565b9665ffffffffffff6040835101511694610c6f89612b14565b610c79868a612a7d565b612783565b610ca9604051610c8d816119d5565b8281526000848201526000604082015260006060820152613a1d565b8460005260008352604060002055604051908152a2005b346100d2576003196060813601126100d25781359067ffffffffffffffff928383116100d257828101833603946080848701126100d257602435948186116100d257366023870112156100d25785840135958287116100d2573660248860051b830101116100d257604435928084116100d25760408785360301126100d257604483019081359873ffffffffffffffffffffffffffffffffffffffff93848b16809b036100d257610dab91610d87610d8d92610d7c368c611e6c565b926024369201612075565b906128e8565b95610da5610d9b368a611e6c565b9136908b01611f34565b90612962565b966040519a7f9936d812000000000000000000000000000000000000000000000000000000008c526060828d01527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60e48d01983591018112156100d25785016024810197910135908282116100d2578160051b360388136100d257608060648d01528190528a9897966101048a0196959493929160005b818110610f235750505094610eb89465ffffffffffff610e946064878d9b9760009f9d99610ea9988e6084819f610e7f6024610e889601611e44565b16910152611d0f565b1660a48c015201611e59565b1660c48801528487830301602488015261272e565b9184830301604485015261270e565b03915afa908115610f1757600090600092610ef1575b50610eed60405192839215158352604060208401526040830190611c42565b0390f35b9050610f1091503d806000833e610f088183611a45565b8101906126c8565b9082610ece565b6040513d6000823e3d90fd5b9198999a5091929394959660019086610f3b8b611d0f565b168152602080910199019101918c9a9998979695949392610e43565b346100d25760606003193601126100d25767ffffffffffffffff9080358281116100d257610f889036908301611af1565b6024359283116100d257610fa5610fae92610eed94369101611af1565b60443591613310565b604051918291602083526020830190611c67565b346100d25760206003193601126100d25773ffffffffffffffffffffffffffffffffffffffff6110286060923560005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b9092916040519365ffffffffffff8092168552166020840152166040820152f35b346100d2576060806003193601126100d25760243567ffffffffffffffff81116100d25761107a9036908401611d30565b9061108583356138a1565b61109c61109183613cd8565b8435906044356137f1565b600191805191601f196110b16101a385611a68565b019060005b8281106112e9575050506110ca8151613985565b6110d48251613985565b9160005b81518110156111b6576110eb818361261c565b5160408101519061114973ffffffffffffffffffffffffffffffffffffffff611114858761261c565b5151169283600052600160205260406000208b3560005260205260406000205461113e868961261c565b5261023c858861261c565b90939291156111ad575b91602091869594936111686111a8988c61261c565b526040611175878a61261c565b5101520151604051926111878461198a565b83526020830152604082015261119d828861261c565b526102b0818761261c565b6110d8565b60009a50611153565b5090919260005b825181101561128f578073ffffffffffffffffffffffffffffffffffffffff6111e961128a938661261c565b5151166111f6828861261c565b51816000526020906001825260406000208b35600052825261121e6040600020918254612f4a565b905561122a838861261c565b5191600052600181526040600020908a35600052527fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a6103816040600020546040519182918d359587846040919493926060820195825260208201520152565b6111bd565b50858286156112cc5750356000526000602052600060408120555b60005b81518110156100d057806103ca6103c46112c7938561261c565b6112ad565b906112d96112e492613cd8565b906044359035613900565b6112aa565b6020906040516112f88161198a565b60008152604051611308816119f1565b6000815283908582820152818301528460408301528288010152016110b6565b346100d25760a06003193601126100d25767ffffffffffffffff9080359060446024803582358681116100d2576113629036908601611aaa565b946064968735906084359081116100d2576113809036908801611bc1565b9260005b60018101808211611560578551811015611403576113ad6113a5838861261c565b51918761261c565b5111156113c2576113bd906125a3565b611384565b89887f496e6469636573206d75737420626520736f72746564000000000000000000008960168a60206040519562461bcd60e51b8752860152840152820152fd5b50508761153b6100d09594611417846138a1565b836114308451946105d76020978897888401208a6137f1565b907fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a73ffffffffffffffffffffffffffffffffffffffff9889611473868661261c565b515116806000526001885260406000208460005288526115096114ab6040600020549360406114a28a8a61261c565b51015185612f57565b909d9291508460005260018c526040600020886000528c526114d36040600020918254612f4a565b905560406114e18a8a61261c565b5101526040518a8101908b82526114ff8161070c604082018c6131e1565b5190209086613900565b6000908152600188526040808220858352895290819020548151878152602081019390935290820152606090a261261c565b519384511693015190604051936115518561198a565b84528301526040820152613649565b8660118a7f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b60806003193601126100d2576115a1611cec565b6024918235916064918235948460a01c156118615773ffffffffffffffffffffffffffffffffffffffff8316938460005260209260018452604060002087600052845260406000205492604435840361182257866116bf57883403611680575050507f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b949561162f91612b73565b926000526001815260406000209085600052528160406000205561167b604051928392836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2005b601f90856040519362461bcd60e51b85528401528201527f496e636f7272656374206d73672e76616c756520666f72206465706f736974006044820152fd5b6117576040939293516000808883017f23b872dd00000000000000000000000000000000000000000000000000000000815233868501523060448501528d8785015286845261170d84611a0d565b6040519361171a856119f1565b8a85527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648b8601525190828d5af1611750612b80565b908a612bb0565b8051868115918215611803575b505090501561179c575050507f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b949561162f91612b73565b60849291602a7f6f7420737563636565640000000000000000000000000000000000000000000092876040519562461bcd60e51b87528601528401527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044840152820152fd5b83809293500103126100d2578561181a9101612684565b80868c611764565b601490856040519362461bcd60e51b85528401528201527f68656c6420213d20657870656374656448656c640000000000000000000000006044820152fd5b601f91925060206040519362461bcd60e51b85528401528201527f4465706f73697420746f2065787465726e616c2064657374696e6174696f6e006044820152fd5b346100d25760406003193601126100d25773ffffffffffffffffffffffffffffffffffffffff6118d1611cec565b16600052600160205260406000206024356000526020526020604060002054604051908152f35b346100d25760606003193601126100d25767ffffffffffffffff6024358181116100d2576119299036908401611af1565b906044359081116100d25761196b926119809261194c6119539336908401611bc1565b9135612f57565b92939190604051958695608087526080870190611c67565b91151560208601528482036040860152611c67565b9060608301520390f35b6060810190811067ffffffffffffffff8211176119a657604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6080810190811067ffffffffffffffff8211176119a657604052565b6040810190811067ffffffffffffffff8211176119a657604052565b60a0810190811067ffffffffffffffff8211176119a657604052565b6020810190811067ffffffffffffffff8211176119a657604052565b90601f601f19910116810190811067ffffffffffffffff8211176119a657604052565b67ffffffffffffffff81116119a65760051b60200190565b359060ff821682036100d257565b67ffffffffffffffff81116119a657601f01601f191660200190565b81601f820112156100d257803590611ac182611a8e565b92611acf6040519485611a45565b828452602083830101116100d257816000926020809301838601378301015290565b9080601f830112156100d2578135611b0881611a68565b92604091611b1883519586611a45565b808552602093848087019260051b840101938185116100d257858401925b858410611b47575050505050505090565b67ffffffffffffffff84358181116100d257860191608080601f1985880301126100d257845190611b77826119d5565b8a8501358252858501358b830152606090611b93828701611a80565b878401528501359384116100d257611bb2878c80979681970101611aaa565b90820152815201930192611b36565b81601f820112156100d257803591611bd883611a68565b92611be66040519485611a45565b808452602092838086019260051b8201019283116100d2578301905b828210611c10575050505090565b81358152908301908301611c02565b60005b838110611c325750506000910152565b8181015183820152602001611c22565b90601f19601f602093611c6081518092818752878088019101611c1f565b0116010190565b908082519081815260208091019281808460051b8301019501936000915b848310611c955750505050505090565b9091929394958480611cdc83601f1986600196030187528a51805182528381015184830152604060ff81830151169083015260608091015191608080928201520190611c42565b9801930193019194939290611c85565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100d257565b359073ffffffffffffffffffffffffffffffffffffffff821682036100d257565b9080601f830112156100d2578135611d4781611a68565b92604091611d5783519586611a45565b808552602093848087019260051b840101938185116100d257858401925b858410611d86575050505050505090565b67ffffffffffffffff84358181116100d2578601916060601f1990808286890301126100d257855191611db88361198a565b611dc38c8701611d0f565b8352868601358581116100d2578790870191828a0301126100d257865190611dea826119f1565b8c81013560048110156100d2578252878101358681116100d2578d8a91611e12930101611aaa565b8c8201528b8301528401359283116100d257611e35868b80969581960101611af1565b85820152815201930192611d75565b359067ffffffffffffffff821682036100d257565b359065ffffffffffff821682036100d257565b9190916080818403126100d25760405190611e86826119d5565b8193813567ffffffffffffffff81116100d25782019080601f830112156100d257813590611eb382611a68565b91611ec16040519384611a45565b808352602093848085019260051b8201019283116100d2578401905b828210611f1d57505050606092611f189284928652611efd818301611e44565b90860152611f0d60408201611d0f565b604086015201611e59565b910152565b848091611f2984611d0f565b815201910190611edd565b919060409283818303126100d25783518481019167ffffffffffffffff95828410878511176119a657838152829682358181116100d2578301926080848803126100d257611f81866119d5565b83358281116100d25787611f96918601611d30565b8652602095868501358381116100d25788611fb2918701611aaa565b606095869182890152611fc6868201611e59565b6080890152013580151581036100d25760a08701528552858101359182116100d257019085601f830112156100d25781359061200182611a68565b9661200e82519889611a45565b8288528685818a019402850101938185116100d2578701925b848410612038575050505050500152565b85848303126100d257878691845161204f8161198a565b61205887611a80565b815282870135838201528587013586820152815201930192612027565b9291909261208284611a68565b916120906040519384611a45565b829480845260208094019060051b8301928284116100d25780915b8483106120ba57505050505050565b823567ffffffffffffffff81116100d25786916120da8684938601611f34565b8152019201916120ab565b9080601f830112156100d25781602061210093359101612075565b90565b9060406003198301126100d25767ffffffffffffffff6004358181116100d2578361213091600401611e6c565b926024359182116100d25761210091600401611f34565b6003111561215157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b156121885750565b6121ac9060405191829162461bcd60e51b8352602060048401526024830190611c42565b0390fd5b91909165ffffffffffff808094169116019182116121ca57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906080810182519060808352815180915260a0830190602060a08260051b8601019301916000905b82821061226257505050506060612245819260208601518582036020870152611c42565b9365ffffffffffff60408201511660408501520151151591015290565b909192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60868203018252845173ffffffffffffffffffffffffffffffffffffffff8151168252602081015160606020840152805160048082101561237b575060206040926122e2926060870152015182608086015260a0850190611c42565b910151916040818303910152815180825260208201906020808260051b85010194019260005b828110612328575050505050602080600192960192019201909291612221565b909192939460208061236e83601f198760019603018952608060608b5180518452858101518685015260ff60408201511660408501520151918160608201520190611c42565b9701950193929101612308565b6021907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b8051906123be604092838552838501906121f9565b9060208091015193818184039101528080855193848152019401926000905b8382106123ec57505050505090565b8451805160ff168752808401518785015281015186820152606090950194938201936001909101906123dd565b919061242483613baf565b9261242e84612b14565b6060825101511561255f5760206124458383612962565b015190816000925b61251c575060ff9051519116036124d8577f4f465027a3d06ea73dd12be0f5c5fc0a34e21f19d6eaed4834a7a944edabc901602084926124c161249a65ffffffffffff4216925151613cd8565b604051906124a7826119d5565b600082528385830152600060408301526060820152613a1d565b8460005260008352604060002055604051908152a2565b606460405162461bcd60e51b815260206004820152600a60248201527f21756e616e696d6f7573000000000000000000000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908082116121ca57169160ff8091169081146121ca57600101918061244d565b606460405162461bcd60e51b815260206004820152601360248201527f5374617465206d7573742062652066696e616c000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146121ca5760010190565b8051156125dd5760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051600110156125dd5760400190565b80518210156125dd5760209160051b010190565b60005b825181101561267c5773ffffffffffffffffffffffffffffffffffffffff8061265c838661261c565b5116908316146126745761266f906125a3565b612633565b505050600190565b505050600090565b519081151582036100d257565b9092919261269e81611a8e565b916126ac6040519384611a45565b8294828452828201116100d25760206126c6930190611c1f565b565b91906040838203126100d2576126dd83612684565b9260208101519067ffffffffffffffff82116100d257019080601f830112156100d257815161210092602001612691565b9060208061272584516040855260408501906121f9565b93015191015290565b90815180825260208092019182818360051b82019501936000915b8483106127595750505050505090565b909192939495848061277383856001950387528a5161270e565b9801930193019194939290612749565b9291604084019173ffffffffffffffffffffffffffffffffffffffff916127b86127b18486511693886128e8565b9187612962565b6040519687947f9936d8120000000000000000000000000000000000000000000000000000000086526060600487015260e4860196825160806064890152805180995261010488019860208092019060005b8181106128955750505060009865ffffffffffff6060868b99968a999667ffffffffffffffff610ea9976128629b01511660848c0152511660a48a015201511660c4870152600319938487830301602488015261272e565b03915afa918215610f1757600090819361287b57509190565b906128919293503d8091833e610f088183611a45565b9091565b825186168c529a83019a8d9a509183019160010161280a565b604051906128bb826119f1565b60006020836040516128cc816119d5565b6060815260608382015283604082015283606082015281520152565b815191601f196128fa6101a385611a68565b0160005b81811061294b57505060005b8151811015612945578061292b612924612940938561261c565b5185612962565b612935828761261c565b526102b0818661261c565b61290a565b50505090565b6020906129566128ae565b828288010152016128fe565b919061296c6128ae565b508051906040519161297d836119f1565b82526020928383019260009283855283955b808201805151881015612a71576129bf906129b8896129b1869896518d613c61565b925161261c565b5190613ad1565b92859473ffffffffffffffffffffffffffffffffffffffff809516955b8a518051821015612a61576129f282889261261c565b51168714612a0857612a03906125a3565b6129dc565b929891955093509060ff8111612a3457906001612a2a921b87511787526125a3565b959291909261298f565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b50509350935095612a2a906125a3565b50505093509350505090565b612aba9060005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b505065ffffffffffff80911691161115612ad057565b606460405162461bcd60e51b815260206004820152601c60248201527f7475726e4e756d5265636f7264206e6f7420696e637265617365642e000000006044820152fd5b612b1f6002916139b6565b612b2881612147565b14612b2f57565b606460405162461bcd60e51b815260206004820152601260248201527f4368616e6e656c2066696e616c697a65642e00000000000000000000000000006044820152fd5b919082018092116121ca57565b3d15612bab573d90612b9182611a8e565b91612b9f6040519384611a45565b82523d6000602084013e565b606090565b91929015612c115750815115612bc4575090565b3b15612bcd5790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156121885750805190602001fd5b9080601f830112156100d257815161210092602001612691565b805181016020828203126100d257602082015167ffffffffffffffff81116100d25760208201603f8285010112156100d2576020818401015190612c8182611a68565b93612c8f6040519586611a45565b82855260208501916020850160408560051b8385010101116100d257604081830101925b60408560051b83850101018410612ccd5750505050505090565b835167ffffffffffffffff81116100d25782840101601f1990606082828a0301126100d25760405191612cff8361198a565b604082015173ffffffffffffffffffffffffffffffffffffffff811681036100d2578352606082015167ffffffffffffffff81116100d257604090830191828b0301126100d25760405190612d53826119f1565b604081015160048110156100d257825260608101519067ffffffffffffffff82116100d2576040612d8a9260208d01920101612c24565b60208201526020830152608081015167ffffffffffffffff81116100d25760208901605f8284010112156100d2576040818301015190612dc982611a68565b92612dd76040519485611a45565b828452602084019060208c0160608560051b8584010101116100d257606083820101915b60608560051b85840101018310612e245750505050506040820152815260209384019301612cb3565b825167ffffffffffffffff81116100d257608083860182018f037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001126100d25760405191612e72836119d5565b8386018201606081015184526080810151602085015260a0015160ff811681036100d257604084015260c0828786010101519267ffffffffffffffff84116100d2578f602094936060869586612ecf9401928b8a01010101612c24565b6060820152815201920191612dfb565b90612ee982611a68565b604090612ef882519182611a45565b838152601f19612f088295611a68565b0191600091825b848110612f1d575050505050565b6020908351612f2b816119d5565b8581528286818301528686830152606080830152828501015201612f0f565b919082039182116121ca57565b91929083518015156000146131d657612f6f90612edf565b91600091612f7d8151612edf565b95600190818097938960009586935b612f9a575b50505050505050565b9091929394959783518510156131cd57612fb4858561261c565b5151612fc0868561261c565b515260409060ff8083612fd3898961261c565b5101511683612fe2898861261c565b510152606080612ff2898961261c565b510151816130008a8961261c565b510152602093846130118a8a61261c565b510151868111156131c7575085965b8d8b51908b821592831561319d575b50505060001461316c5750600283828f613049908c61261c565b5101511614613129578f96959493868f918f6130e6906130ec946130f8988f988f908f916130f29a898f946130c18f86928861309c83613096888461308e848e61261c565b510151612f4a565b9361261c565b5101526130a9818761261c565b515198856130b7838961261c565b510151169561261c565b510151948251966130d1886119d5565b8752860152840152820152610278838361261c565b50612b73565b9c6125a3565b9561261c565b510151613120575b6131139161310d91612f4a565b936125a3565b91909493928a9085612f8c565b60009a50613100565b84606491519062461bcd60e51b82526004820152601b60248201527f63616e6e6f74207472616e7366657220612067756172616e74656500000000006044820152fd5b90506130f892508891508461318783959e989796958a61261c565b51015184613195848461261c565b51015261261c565b8210925090826131b2575b50508e8b3861302f565b6131be9192508d61261c565b51148a8f6131a8565b96613020565b97829150612f91565b50612f6f8151612edf565b90815180825260208092019182818360051b82019501936000915b84831061320c5750505050505090565b9091929394958181038352865173ffffffffffffffffffffffffffffffffffffffff815116825285810151906060918288850152805160048082101561237b575091886132729285948796839801520151604092839182608088015260a0870190611c42565b91015193828183039101528351908181528581019286808460051b8401019601946000915b8483106132ba5750505050505050908060019298019301930191949392906131fc565b91939597806132fc89601f1987600196989a9c03018b526080878d5180518452858101518685015260ff89820151168985015201519181898201520190611c42565b99019701930190918b979695939492613297565b80517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116121ca5761334590612edf565b91613350848361261c565b51606081015192604094855191613366836119f1565b600095868452866020809501528781805181010312613645578780519161338c836119f1565b85810151835201519084810191825287998890899c8a988b5b87518d101561350e578f848e146134ff578c8f8f90613412858f8f908f6133cc878261261c565b515195826133da898461261c565b51015160606133f08a60ff856130b7838961261c565b510151938251986134008a6119d5565b8952880152860152606085015261261c565b5261341d848d61261c565b50871590816134e9575b506134af575b50158061349a575b61344c575b6130ec613446916125a3565b9b6133a5565b9e509861348f908f61347a8b6134708f613466839161260c565b510151938d61261c565b5101918251612b73565b9052896134868d61260c565b51015190612b73565b60019e90999061343a565b506134a58d8961261c565b5151875114613435565b829c919650613486818c6134d88f6134706134df98826134cf81996125d0565b5101519461261c565b90526125d0565b996001948c61342d565b6134f491508b61261c565b51518851148f613427565b509b9d5061344660019e6125a3565b509899509c969a9950509399925050501561360257156135bf571561357c578301510361353a57505090565b60649250519062461bcd60e51b825280600483015260248201527f746f74616c5265636c61696d6564213d67756172616e7465652e616d6f756e746044820152fd5b60648484519062461bcd60e51b82526004820152601460248201527f636f756c64206e6f742066696e642072696768740000000000000000000000006044820152fd5b60648585519062461bcd60e51b82526004820152601360248201527f636f756c64206e6f742066696e64206c656674000000000000000000000000006044820152fd5b60648686519062461bcd60e51b82526004820152601560248201527f636f756c64206e6f742066696e642074617267657400000000000000000000006044820152fd5b8680fd5b73ffffffffffffffffffffffffffffffffffffffff90818151169160005b6040808401908151918251841015612f91578461368585809561261c565b51519161369660209586925161261c565b510151918060a01c156000146137c657168761371657600080809381935af16136bd612b80565b50156136d35750506136ce906125a3565b613667565b60649250519062461bcd60e51b82526004820152601660248201527f436f756c64206e6f74207472616e7366657220455448000000000000000000006044820152fd5b82517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810191909152929190818460448160008b5af19081156137bc5750613786575b506136ce91506125a3565b82813d83116137b5575b61379a8183611a45565b810103126100d2576137ae6136ce92612684565b503861377b565b503d613790565b513d6000823e3d90fd5b600089815260018652848120918152945250912080546136ce93926137ea91612b73565b90556125a3565b9161382f9060005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b9391505061385373ffffffffffffffffffffffffffffffffffffffff928392613a97565b1691160361385d57565b606460405162461bcd60e51b815260206004820152601560248201527f696e636f72726563742066696e6765727072696e7400000000000000000000006044820152fd5b6138ac6002916139b6565b6138b581612147565b036138bc57565b606460405162461bcd60e51b815260206004820152601660248201527f4368616e6e656c206e6f742066696e616c697a65642e000000000000000000006044820152fd5b9190613974916139438460005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b50929060405193613953856119d5565b65ffffffffffff809216855216602084015260408301526060820152613a1d565b906000526000602052604060002055565b9061398f82611a68565b61399c6040519182611a45565b828152601f196139ac8294611a68565b0190602036910137565b6139fa65ffffffffffff9160005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b509050168015600014613a0d5750600090565b4210613a1857600290565b600190565b73ffffffffffffffffffffffffffffffffffffffff613a927fffffffffffff0000000000000000000000000000000000000000000000000000835160d01b1679ffffffffffff0000000000000000000000000000000000000000602085015160a01b1617926060604082015191015190613a97565b161790565b73ffffffffffffffffffffffffffffffffffffffff916040519060208201928352604082015260408152613aca8161198a565b5190201690565b90600060806020926040948551858101917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008352603c820152603c8152613b178161198a565b5190209060ff8151169086868201519101519187519384528684015286830152606082015282805260015afa156137bc576000519073ffffffffffffffffffffffffffffffffffffffff821615613b6c575090565b6064905162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e61747572650000000000000000000000000000006044820152fd5b80519060209167ffffffffffffffff838301511673ffffffffffffffffffffffffffffffffffffffff9165ffffffffffff606084604087015116950151166040519485938785019760a086019060808a5285518092528060c088019601976000905b838210613c445750505050613c3e955060408501526060840152608083015203601f198101835282611a45565b51902090565b895181168852988201988a98509682019660019190910190613c11565b613c3e613c70613cae92613baf565b926020810151815191606065ffffffffffff6040830151169101511515613cc160405196879460208601998a5260a0604087015260c0860190611c42565b601f1995868683030160608701526131e1565b91608084015260a083015203908101835282611a45565b604051613c3e8161070c60208201946020865260408301906131e156fea26469706673582212207ae4752964890e1d0780b54f6661b45ca27de26920bc6463cccfdf0726c77c2f64736f6c63430008110033", + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialHoldings\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalHoldings\",\"type\":\"uint256\"}],\"name\":\"AllocationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newTurnNumRecord\",\"type\":\"uint48\"}],\"name\":\"ChallengeCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"ChallengeRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"}],\"name\":\"Concluded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationHoldings\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"}],\"name\":\"Reclaimed\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature\",\"name\":\"challengerSig\",\"type\":\"tuple\"}],\"name\":\"challenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"sourceAllocations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"targetAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"indexOfTargetInSource\",\"type\":\"uint256\"}],\"name\":\"compute_reclaim_effects\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialHoldings\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"}],\"name\":\"compute_transfer_effects_and_interactions\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"newAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"allocatesOnlyZeros\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"exitAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"totalPayouts\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"conclude\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"concludeAndTransferAllAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expectedHeld\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"holdings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChannelId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sourceStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"sourceOutcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceAssetIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOfTargetInSource\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"targetStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"targetOutcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"targetAssetIndex\",\"type\":\"uint256\"}],\"internalType\":\"structIMultiAssetHolder.ReclaimArgs\",\"name\":\"reclaimArgs\",\"type\":\"tuple\"}],\"name\":\"reclaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"stateIsSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"statusOf\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"fromChannelId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"outcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"transferAllAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"}],\"name\":\"unpackStatus\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"turnNumRecord\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"},{\"internalType\":\"uint160\",\"name\":\"fingerprint\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"missingAccountFunds\",\"type\":\"uint256\"}],\"name\":\"validateUserOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6080806040523461001657613d71908161001c8239f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816311e9f1781461193e578163166e56cd146118e95781632fb1d270146115d35781633033730e1461136e57816331afa0b41461108f5781633a871cdd14611054578163552cfa5014610fcd578163566d54c614610f625781635685b7dc14610ccb5781636d2a9c9214610bcf5781638286a06014610818578163c7df14e2146107ee578163d3c4e738146104ed578163ec346235146100e2575063ee049b50146100c457600080fd5b346100dd576100db6100d536612149565b9061245f565b005b600080fd5b346100dd576100fc906100f436612149565b80939161245f565b91515190610109836138e7565b61011282613d1e565b61014f8460005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b93915050604051926020938481019360008552604082015260408152610174816119d0565b73ffffffffffffffffffffffffffffffffffffffff80948192519020169116036104aa5750600191835191601f196101c46101ae85611aae565b946101bc6040519687611a8b565b808652611aae565b018260005b82811061046b575050506101dd85516139cb565b6101e786516139cb565b9060005b87518110156102cf576101fe8189612662565b518860408201519161025f876102148685612662565b515116938460005260018a528d6040600020906000528a5260406000205461023c8789612662565b526102478688612662565b51906040519161025683611a6f565b60008352612f9d565b909491156102c6575b9160406102898880989796948e966102836102c19c8f612662565b52612662565b51015201516040519261029b846119d0565b83528883015260408201526102b08289612662565b526102bb8188612662565b506125e9565b6101eb565b60009c50610268565b50919095879460005b82518110156103995780877fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a8b6103208489610317610394988b612662565b51511692612662565b518160005260018b526040600020846000528b526103446040600020918254612f90565b9055610350848a612662565b519060005260018a526040600020836000528a526040600020549061038c60405192839287846040919493926060820195825260208201520152565b0390a26125e9565b6102d8565b5085858389156103df5750600091825252600060408120555b60005b81518110156100db57806103d56103cf6103da9385612662565b5161368f565b6125e9565b6103b5565b9061045c6103ee600093613d1e565b61042b8560005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b5091906040519261043b84611a1b565b65ffffffffffff809216845216848301528460408301526060820152613a63565b928252526040600020556103b2565b604051610477816119d0565b6000815260405161048781611a37565b6000815260609081858201528483015260408201528282880101520183906101c9565b606490836040519162461bcd60e51b8352820152601560248201527f696e636f72726563742066696e6765727072696e7400000000000000000000006044820152fd5b346100dd5760206003199080823601126100dd5782359167ffffffffffffffff938484116100dd57610100809285360301126100dd57604051918201828110868211176107c057604052838101358252828201906024850135825260448501358681116100dd5761056390823691880101611af0565b906040840191825260608401956064810135875260808501906084810135825260a086019860a48201358a5260c48201359081116100dd576105ac60e491853691850101611af0565b918260c089015201359860e08701938a85526105e7885196516105e28c51986105d4816138e7565b8a518351848f012090613837565b612c84565b80966105f285612c84565b9c73ffffffffffffffffffffffffffffffffffffffff91600260ff60406106368161062b8689610622828d612662565b5151169a612662565b5101518c5190612662565b510151160361077d578e969594939291610663604061065861066b948e612662565b5101518a5190612662565b515197612662565b5151160361073a57506106db8a9b60406106d07f4d3754632451ebba9812a9305e7bca17b67a17186a5cff93d2e9ae1b01e3d27b9d6106c9888f6106e69b9961072e9f9e9d9b996106bc889b6138e7565b5191815191012090613837565b5189612662565b510151945190612662565b510151905191613356565b9184519260406106f78a5185612662565b510152519060405161072581610717898201948a86526040830190613227565b03601f198101835282611a8b565b51902091613946565b519251604051908152a2005b6064908a6040519162461bcd60e51b8352820152601d60248201527f746172676574417373657420213d2067756172616e74656541737365740000006044820152fd5b6064858e6040519162461bcd60e51b8352820152601a60248201527f6e6f7420612067756172616e74656520616c6c6f636174696f6e0000000000006044820152fd5b6041827f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b346100dd5760206003193601126100dd573560005260006020526020604060002054604051908152f35b346100dd5760c06003193601126100dd5767ffffffffffffffff9080358281116100dd576108499036908301611eb2565b906024358381116100dd57610861903690830161212b565b926044359081116100dd576108799036908301611f7a565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126100dd576040516108af816119d0565b60643560ff811681036100dd578152608435602082015260a43560408201526108d784613bf5565b9365ffffffffffff60408451015116936108f0866139fc565b6108f98161218d565b610b9e5765ffffffffffff6109418760005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b5050168510610b5a575b61095f6109598589856127c9565b906121c6565b6109cc61096d855184613ca7565b936109c78451916040516020810190888252604080820152600960608201527f666f7263654d6f766500000000000000000000000000000000000000000000006080820152608081526109bf81611a53565b519020613b17565b612676565b15610b1657506109f065ffffffffffff60608301511665ffffffffffff42166121f6565b956040519665ffffffffffff60608901911688526060602089015281518091526080880190602060808260051b8b01019301916000905b828210610acd5750505050610a8c65ffffffffffff60608194897f0aa12461ee6c137332989aa12cec79f4772ab2c1a8732a382aada7e9f3ec9d348c80610a7e610ab99e9f99610a949a810360408401528d6123ef565b0390a20151168342166121f6565b935151613d1e565b9260405194610aa286611a1b565b855216602084015260408301526060820152613a63565b906000526000602052604060002055600080f35b90919293602080610b08837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f6001960301865288516123ef565b960192019201909291610a27565b60649060206040519162461bcd60e51b8352820152601f60248201527f4368616c6c656e676572206973206e6f742061207061727469636970616e74006044820152fd5b60649060206040519162461bcd60e51b8352820152601860248201527f7475726e4e756d5265636f7264206465637265617365642e00000000000000006044820152fd5b6001610ba9876139fc565b610bb28161218d565b03610bc657610bc18587612ac3565b61094b565b610bc186612b5a565b346100dd5760606003193601126100dd5767ffffffffffffffff81358181116100dd57610bff9036908401611eb2565b916024358281116100dd57610c17903690830161212b565b926044359283116100dd57610c89610959610c586020947f07da0a0674fb921e484018c8b81d80e292745e5d8ed134b580c8b9c631c5e9e096369101611f7a565b610c6184613bf5565b9665ffffffffffff6040835101511694610c7a89612b5a565b610c84868a612ac3565b6127c9565b610cb4604051610c9881611a1b565b8281526000848201526000604082015260006060820152613a63565b8460005260008352604060002055604051908152a2005b346100dd576003196060813601126100dd5781359067ffffffffffffffff928383116100dd57828101833603946080848701126100dd57602435948186116100dd57366023870112156100dd5785840135958287116100dd573660248860051b830101116100dd57604435928084116100dd5760408785360301126100dd57604483019081359873ffffffffffffffffffffffffffffffffffffffff93848b16809b036100dd57610db691610d92610d9892610d87368c611eb2565b9260243692016120bb565b9061292e565b95610db0610da6368a611eb2565b9136908b01611f7a565b906129a8565b966040519a7f9936d812000000000000000000000000000000000000000000000000000000008c526060828d01527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60e48d01983591018112156100dd5785016024810197910135908282116100dd578160051b360388136100dd57608060648d01528190528a9897966101048a0196959493929160005b818110610f2e5750505094610ec39465ffffffffffff610e9f6064878d9b9760009f9d99610eb4988e6084819f610e8a6024610e939601611e8a565b16910152611d55565b1660a48c015201611e9f565b1660c488015284878303016024880152612774565b91848303016044850152612754565b03915afa908115610f2257600090600092610efc575b50610ef860405192839215158352604060208401526040830190611c88565b0390f35b9050610f1b91503d806000833e610f138183611a8b565b81019061270e565b9082610ed9565b6040513d6000823e3d90fd5b9198999a5091929394959660019086610f468b611d55565b168152602080910199019101918c9a9998979695949392610e4e565b346100dd5760606003193601126100dd5767ffffffffffffffff9080358281116100dd57610f939036908301611b37565b6024359283116100dd57610fb0610fb992610ef894369101611b37565b60443591613356565b604051918291602083526020830190611cad565b346100dd5760206003193601126100dd5773ffffffffffffffffffffffffffffffffffffffff6110336060923560005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b9092916040519365ffffffffffff8092168552166020840152166040820152f35b346100dd57600319906060823601126100dd57359067ffffffffffffffff82116100dd5761016091360301126100dd57602060405160008152f35b346100dd576060806003193601126100dd5760243567ffffffffffffffff81116100dd576110c09036908401611d76565b906110cb83356138e7565b6110e26110d783613d1e565b843590604435613837565b600191805191601f196110f76101ae85611aae565b019060005b82811061132f5750505061111081516139cb565b61111a82516139cb565b9160005b81518110156111fc576111318183612662565b5160408101519061118f73ffffffffffffffffffffffffffffffffffffffff61115a8587612662565b5151169283600052600160205260406000208b356000526020526040600020546111848689612662565b526102478588612662565b90939291156111f3575b91602091869594936111ae6111ee988c612662565b5260406111bb878a612662565b5101520151604051926111cd846119d0565b8352602083015260408201526111e38288612662565b526102bb8187612662565b61111e565b60009a50611199565b5090919260005b82518110156112d5578073ffffffffffffffffffffffffffffffffffffffff61122f6112d09386612662565b51511661123c8288612662565b51816000526020906001825260406000208b3560005282526112646040600020918254612f90565b90556112708388612662565b5191600052600181526040600020908a35600052527fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a61038c6040600020546040519182918d359587846040919493926060820195825260208201520152565b611203565b50858286156113125750356000526000602052600060408120555b60005b81518110156100db57806103d56103cf61130d9385612662565b6112f3565b9061131f61132a92613d1e565b906044359035613946565b6112f0565b60209060405161133e816119d0565b6000815260405161134e81611a37565b6000815283908582820152818301528460408301528288010152016110fc565b346100dd5760a06003193601126100dd5767ffffffffffffffff9080359060446024803582358681116100dd576113a89036908601611af0565b946064968735906084359081116100dd576113c69036908801611c07565b9260005b600181018082116115a6578551811015611449576113f36113eb8388612662565b519187612662565b51111561140857611403906125e9565b6113ca565b89887f496e6469636573206d75737420626520736f72746564000000000000000000008960168a60206040519562461bcd60e51b8752860152840152820152fd5b5050876115816100db959461145d846138e7565b836114768451946105e26020978897888401208a613837565b907fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a73ffffffffffffffffffffffffffffffffffffffff98896114b98686612662565b5151168060005260018852604060002084600052885261154f6114f16040600020549360406114e88a8a612662565b51015185612f9d565b909d9291508460005260018c526040600020886000528c526115196040600020918254612f90565b905560406115278a8a612662565b5101526040518a8101908b825261154581610717604082018c613227565b5190209086613946565b6000908152600188526040808220858352895290819020548151878152602081019390935290820152606090a2612662565b51938451169301519060405193611597856119d0565b8452830152604082015261368f565b8660118a7f4e487b7100000000000000000000000000000000000000000000000000000000600052526000fd5b60806003193601126100dd576115e7611d32565b6024918235916064918235948460a01c156118a75773ffffffffffffffffffffffffffffffffffffffff831693846000526020926001845260406000208760005284526040600020549260443584036118685786611705578834036116c6575050507f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b949561167591612bb9565b92600052600181526040600020908560005252816040600020556116c1604051928392836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2005b601f90856040519362461bcd60e51b85528401528201527f496e636f7272656374206d73672e76616c756520666f72206465706f736974006044820152fd5b61179d6040939293516000808883017f23b872dd00000000000000000000000000000000000000000000000000000000815233868501523060448501528d8785015286845261175384611a53565b6040519361176085611a37565b8a85527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648b8601525190828d5af1611796612bc6565b908a612bf6565b8051868115918215611849575b50509050156117e2575050507f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b949561167591612bb9565b60849291602a7f6f7420737563636565640000000000000000000000000000000000000000000092876040519562461bcd60e51b87528601528401527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044840152820152fd5b83809293500103126100dd578561186091016126ca565b80868c6117aa565b601490856040519362461bcd60e51b85528401528201527f68656c6420213d20657870656374656448656c640000000000000000000000006044820152fd5b601f91925060206040519362461bcd60e51b85528401528201527f4465706f73697420746f2065787465726e616c2064657374696e6174696f6e006044820152fd5b346100dd5760406003193601126100dd5773ffffffffffffffffffffffffffffffffffffffff611917611d32565b16600052600160205260406000206024356000526020526020604060002054604051908152f35b346100dd5760606003193601126100dd5767ffffffffffffffff6024358181116100dd5761196f9036908401611b37565b906044359081116100dd576119b1926119c6926119926119999336908401611c07565b9135612f9d565b92939190604051958695608087526080870190611cad565b91151560208601528482036040860152611cad565b9060608301520390f35b6060810190811067ffffffffffffffff8211176119ec57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6080810190811067ffffffffffffffff8211176119ec57604052565b6040810190811067ffffffffffffffff8211176119ec57604052565b60a0810190811067ffffffffffffffff8211176119ec57604052565b6020810190811067ffffffffffffffff8211176119ec57604052565b90601f601f19910116810190811067ffffffffffffffff8211176119ec57604052565b67ffffffffffffffff81116119ec5760051b60200190565b359060ff821682036100dd57565b67ffffffffffffffff81116119ec57601f01601f191660200190565b81601f820112156100dd57803590611b0782611ad4565b92611b156040519485611a8b565b828452602083830101116100dd57816000926020809301838601378301015290565b9080601f830112156100dd578135611b4e81611aae565b92604091611b5e83519586611a8b565b808552602093848087019260051b840101938185116100dd57858401925b858410611b8d575050505050505090565b67ffffffffffffffff84358181116100dd57860191608080601f1985880301126100dd57845190611bbd82611a1b565b8a8501358252858501358b830152606090611bd9828701611ac6565b878401528501359384116100dd57611bf8878c80979681970101611af0565b90820152815201930192611b7c565b81601f820112156100dd57803591611c1e83611aae565b92611c2c6040519485611a8b565b808452602092838086019260051b8201019283116100dd578301905b828210611c56575050505090565b81358152908301908301611c48565b60005b838110611c785750506000910152565b8181015183820152602001611c68565b90601f19601f602093611ca681518092818752878088019101611c65565b0116010190565b908082519081815260208091019281808460051b8301019501936000915b848310611cdb5750505050505090565b9091929394958480611d2283601f1986600196030187528a51805182528381015184830152604060ff81830151169083015260608091015191608080928201520190611c88565b9801930193019194939290611ccb565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100dd57565b359073ffffffffffffffffffffffffffffffffffffffff821682036100dd57565b9080601f830112156100dd578135611d8d81611aae565b92604091611d9d83519586611a8b565b808552602093848087019260051b840101938185116100dd57858401925b858410611dcc575050505050505090565b67ffffffffffffffff84358181116100dd578601916060601f1990808286890301126100dd57855191611dfe836119d0565b611e098c8701611d55565b8352868601358581116100dd578790870191828a0301126100dd57865190611e3082611a37565b8c81013560048110156100dd578252878101358681116100dd578d8a91611e58930101611af0565b8c8201528b8301528401359283116100dd57611e7b868b80969581960101611b37565b85820152815201930192611dbb565b359067ffffffffffffffff821682036100dd57565b359065ffffffffffff821682036100dd57565b9190916080818403126100dd5760405190611ecc82611a1b565b8193813567ffffffffffffffff81116100dd5782019080601f830112156100dd57813590611ef982611aae565b91611f076040519384611a8b565b808352602093848085019260051b8201019283116100dd578401905b828210611f6357505050606092611f5e9284928652611f43818301611e8a565b90860152611f5360408201611d55565b604086015201611e9f565b910152565b848091611f6f84611d55565b815201910190611f23565b919060409283818303126100dd5783518481019167ffffffffffffffff95828410878511176119ec57838152829682358181116100dd578301926080848803126100dd57611fc786611a1b565b83358281116100dd5787611fdc918601611d76565b8652602095868501358381116100dd5788611ff8918701611af0565b60609586918289015261200c868201611e9f565b6080890152013580151581036100dd5760a08701528552858101359182116100dd57019085601f830112156100dd5781359061204782611aae565b9661205482519889611a8b565b8288528685818a019402850101938185116100dd578701925b84841061207e575050505050500152565b85848303126100dd578786918451612095816119d0565b61209e87611ac6565b81528287013583820152858701358682015281520193019261206d565b929190926120c884611aae565b916120d66040519384611a8b565b829480845260208094019060051b8301928284116100dd5780915b84831061210057505050505050565b823567ffffffffffffffff81116100dd5786916121208684938601611f7a565b8152019201916120f1565b9080601f830112156100dd57816020612146933591016120bb565b90565b9060406003198301126100dd5767ffffffffffffffff6004358181116100dd578361217691600401611eb2565b926024359182116100dd5761214691600401611f7a565b6003111561219757565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b156121ce5750565b6121f29060405191829162461bcd60e51b8352602060048401526024830190611c88565b0390fd5b91909165ffffffffffff8080941691160191821161221057565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906080810182519060808352815180915260a0830190602060a08260051b8601019301916000905b8282106122a85750505050606061228b819260208601518582036020870152611c88565b9365ffffffffffff60408201511660408501520151151591015290565b909192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60868203018252845173ffffffffffffffffffffffffffffffffffffffff815116825260208101516060602084015280516004808210156123c157506020604092612328926060870152015182608086015260a0850190611c88565b910151916040818303910152815180825260208201906020808260051b85010194019260005b82811061236e575050505050602080600192960192019201909291612267565b90919293946020806123b483601f198760019603018952608060608b5180518452858101518685015260ff60408201511660408501520151918160608201520190611c88565b970195019392910161234e565b6021907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b8051906124046040928385528385019061223f565b9060208091015193818184039101528080855193848152019401926000905b83821061243257505050505090565b8451805160ff16875280840151878501528101518682015260609095019493820193600190910190612423565b919061246a83613bf5565b9261247484612b5a565b606082510151156125a557602061248b83836129a8565b015190816000925b612562575060ff90515191160361251e577f4f465027a3d06ea73dd12be0f5c5fc0a34e21f19d6eaed4834a7a944edabc901602084926125076124e065ffffffffffff4216925151613d1e565b604051906124ed82611a1b565b600082528385830152600060408301526060820152613a63565b8460005260008352604060002055604051908152a2565b606460405162461bcd60e51b815260206004820152600a60248201527f21756e616e696d6f7573000000000000000000000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019080821161221057169160ff809116908114612210576001019180612493565b606460405162461bcd60e51b815260206004820152601360248201527f5374617465206d7573742062652066696e616c000000000000000000000000006044820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146122105760010190565b8051156126235760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051600110156126235760400190565b80518210156126235760209160051b010190565b60005b82518110156126c25773ffffffffffffffffffffffffffffffffffffffff806126a28386612662565b5116908316146126ba576126b5906125e9565b612679565b505050600190565b505050600090565b519081151582036100dd57565b909291926126e481611ad4565b916126f26040519384611a8b565b8294828452828201116100dd57602061270c930190611c65565b565b91906040838203126100dd57612723836126ca565b9260208101519067ffffffffffffffff82116100dd57019080601f830112156100dd578151612146926020016126d7565b9060208061276b845160408552604085019061223f565b93015191015290565b90815180825260208092019182818360051b85019501936000915b84831061279f5750505050505090565b90919293949584806127b983856001950387528a51612754565b980193019301919493929061278f565b9291604084019173ffffffffffffffffffffffffffffffffffffffff916127fe6127f784865116938861292e565b91876129a8565b6040519687947f9936d8120000000000000000000000000000000000000000000000000000000086526060600487015260e4860196825160806064890152805180995261010488019860208092019060005b8181106128db5750505060009865ffffffffffff6060868b99968a999667ffffffffffffffff610eb4976128a89b01511660848c0152511660a48a015201511660c48701526003199384878303016024880152612774565b03915afa918215610f225760009081936128c157509190565b906128d79293503d8091833e610f138183611a8b565b9091565b825186168c529a83019a8d9a5091830191600101612850565b6040519061290182611a37565b600060208360405161291281611a1b565b6060815260608382015283604082015283606082015281520152565b815191601f196129406101ae85611aae565b0160005b81811061299157505060005b815181101561298b578061297161296a6129869385612662565b51856129a8565b61297b8287612662565b526102bb8186612662565b612950565b50505090565b60209061299c6128f4565b82828801015201612944565b91906129b26128f4565b50805190604051916129c383611a37565b82526020928383019260009283855283955b808201805151881015612ab757612a05906129fe896129f7869896518d613ca7565b9251612662565b5190613b17565b92859473ffffffffffffffffffffffffffffffffffffffff809516955b8a518051821015612aa757612a38828892612662565b51168714612a4e57612a49906125e9565b612a22565b929891955093509060ff8111612a7a57906001612a70921b87511787526125e9565b95929190926129d5565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b50509350935095612a70906125e9565b50505093509350505090565b612b009060005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b505065ffffffffffff80911691161115612b1657565b606460405162461bcd60e51b815260206004820152601c60248201527f7475726e4e756d5265636f7264206e6f7420696e637265617365642e000000006044820152fd5b612b656002916139fc565b612b6e8161218d565b14612b7557565b606460405162461bcd60e51b815260206004820152601260248201527f4368616e6e656c2066696e616c697a65642e00000000000000000000000000006044820152fd5b9190820180921161221057565b3d15612bf1573d90612bd782611ad4565b91612be56040519384611a8b565b82523d6000602084013e565b606090565b91929015612c575750815115612c0a575090565b3b15612c135790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156121ce5750805190602001fd5b9080601f830112156100dd578151612146926020016126d7565b805181016020828203126100dd57602082015167ffffffffffffffff81116100dd5760208201603f8285010112156100dd576020818401015190612cc782611aae565b93612cd56040519586611a8b565b82855260208501916020850160408560051b8385010101116100dd57604081830101925b60408560051b83850101018410612d135750505050505090565b835167ffffffffffffffff81116100dd5782840101601f1990606082828a0301126100dd5760405191612d45836119d0565b604082015173ffffffffffffffffffffffffffffffffffffffff811681036100dd578352606082015167ffffffffffffffff81116100dd57604090830191828b0301126100dd5760405190612d9982611a37565b604081015160048110156100dd57825260608101519067ffffffffffffffff82116100dd576040612dd09260208d01920101612c6a565b60208201526020830152608081015167ffffffffffffffff81116100dd5760208901605f8284010112156100dd576040818301015190612e0f82611aae565b92612e1d6040519485611a8b565b828452602084019060208c0160608560051b8584010101116100dd57606083820101915b60608560051b85840101018310612e6a5750505050506040820152815260209384019301612cf9565b825167ffffffffffffffff81116100dd57608083860182018f037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001126100dd5760405191612eb883611a1b565b8386018201606081015184526080810151602085015260a0015160ff811681036100dd57604084015260c0828786010101519267ffffffffffffffff84116100dd578f602094936060869586612f159401928b8a01010101612c6a565b6060820152815201920191612e41565b90612f2f82611aae565b604090612f3e82519182611a8b565b838152601f19612f4e8295611aae565b0191600091825b848110612f63575050505050565b6020908351612f7181611a1b565b8581528286818301528686830152606080830152828501015201612f55565b9190820391821161221057565b919290835180151560001461321c57612fb590612f25565b91600091612fc38151612f25565b95600190818097938960009586935b612fe0575b50505050505050565b90919293949597835185101561321357612ffa8585612662565b51516130068685612662565b515260409060ff80836130198989612662565b51015116836130288988612662565b5101526060806130388989612662565b510151816130468a89612662565b510152602093846130578a8a612662565b5101518681111561320d575085965b8d8b51908b82159283156131e3575b5050506000146131b25750600283828f61308f908c612662565b510151161461316f578f96959493868f918f61312c906131329461313e988f988f908f916131389a898f946131078f8692886130e2836130dc88846130d4848e612662565b510151612f90565b93612662565b5101526130ef8187612662565b515198856130fd8389612662565b5101511695612662565b5101519482519661311788611a1b565b87528601528401528201526102838383612662565b50612bb9565b9c6125e9565b95612662565b510151613166575b6131599161315391612f90565b936125e9565b91909493928a9085612fd2565b60009a50613146565b84606491519062461bcd60e51b82526004820152601b60248201527f63616e6e6f74207472616e7366657220612067756172616e74656500000000006044820152fd5b905061313e9250889150846131cd83959e989796958a612662565b510151846131db8484612662565b510152612662565b8210925090826131f8575b50508e8b38613075565b6132049192508d612662565b51148a8f6131ee565b96613066565b97829150612fd7565b50612fb58151612f25565b90815180825260208092019182818360051b82019501936000915b8483106132525750505050505090565b9091929394958181038352865173ffffffffffffffffffffffffffffffffffffffff81511682528581015190606091828885015280516004808210156123c1575091886132b89285948796839801520151604092839182608088015260a0870190611c88565b91015193828183039101528351908181528581019286808460051b8401019601946000915b848310613300575050505050505090806001929801930193019194939290613242565b919395978061334289601f1987600196989a9c03018b526080878d5180518452858101518685015260ff89820151168985015201519181898201520190611c88565b99019701930190918b9796959394926132dd565b80517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116122105761338b90612f25565b916133968483612662565b516060810151926040948551916133ac83611a37565b60009586845286602080950152878180518101031261368b57878051916133d283611a37565b85810151835201519084810191825287998890899c8a988b5b87518d1015613554578f848e14613545578c8f8f90613458858f8f908f6134128782612662565b515195826134208984612662565b51015160606134368a60ff856130fd8389612662565b510151938251986134468a611a1b565b89528801528601526060850152612662565b52613463848d612662565b508715908161352f575b506134f5575b5015806134e0575b613492575b61313261348c916125e9565b9b6133eb565b9e50986134d5908f6134c08b6134b68f6134ac8391612652565b510151938d612662565b5101918251612bb9565b9052896134cc8d612652565b51015190612bb9565b60019e909990613480565b506134eb8d89612662565b515187511461347b565b829c9196506134cc818c61351e8f6134b661352598826135158199612616565b51015194612662565b9052612616565b996001948c613473565b61353a91508b612662565b51518851148f61346d565b509b9d5061348c60019e6125e9565b509899509c969a99505093999250505015613648571561360557156135c2578301510361358057505090565b60649250519062461bcd60e51b825280600483015260248201527f746f74616c5265636c61696d6564213d67756172616e7465652e616d6f756e746044820152fd5b60648484519062461bcd60e51b82526004820152601460248201527f636f756c64206e6f742066696e642072696768740000000000000000000000006044820152fd5b60648585519062461bcd60e51b82526004820152601360248201527f636f756c64206e6f742066696e64206c656674000000000000000000000000006044820152fd5b60648686519062461bcd60e51b82526004820152601560248201527f636f756c64206e6f742066696e642074617267657400000000000000000000006044820152fd5b8680fd5b73ffffffffffffffffffffffffffffffffffffffff90818151169160005b6040808401908151918251841015612fd757846136cb858095612662565b5151916136dc602095869251612662565b510151918060a01c1560001461380c57168761375c57600080809381935af1613703612bc6565b5015613719575050613714906125e9565b6136ad565b60649250519062461bcd60e51b82526004820152601660248201527f436f756c64206e6f74207472616e7366657220455448000000000000000000006044820152fd5b82517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810191909152929190818460448160008b5af190811561380257506137cc575b5061371491506125e9565b82813d83116137fb575b6137e08183611a8b565b810103126100dd576137f4613714926126ca565b50386137c1565b503d6137d6565b513d6000823e3d90fd5b60008981526001865284812091815294525091208054613714939261383091612bb9565b90556125e9565b916138759060005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b9391505061389973ffffffffffffffffffffffffffffffffffffffff928392613add565b169116036138a357565b606460405162461bcd60e51b815260206004820152601560248201527f696e636f72726563742066696e6765727072696e7400000000000000000000006044820152fd5b6138f26002916139fc565b6138fb8161218d565b0361390257565b606460405162461bcd60e51b815260206004820152601660248201527f4368616e6e656c206e6f742066696e616c697a65642e000000000000000000006044820152fd5b91906139ba916139898460005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b5092906040519361399985611a1b565b65ffffffffffff809216855216602084015260408301526060820152613a63565b906000526000602052604060002055565b906139d582611aae565b6139e26040519182611a8b565b828152601f196139f28294611aae565b0190602036910137565b613a4065ffffffffffff9160005260006020526040600020548060d01c9173ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8360a01c16921690565b509050168015600014613a535750600090565b4210613a5e57600290565b600190565b73ffffffffffffffffffffffffffffffffffffffff613ad87fffffffffffff0000000000000000000000000000000000000000000000000000835160d01b1679ffffffffffff0000000000000000000000000000000000000000602085015160a01b1617926060604082015191015190613add565b161790565b73ffffffffffffffffffffffffffffffffffffffff916040519060208201928352604082015260408152613b10816119d0565b5190201690565b90600060806020926040948551858101917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008352603c820152603c8152613b5d816119d0565b5190209060ff8151169086868201519101519187519384528684015286830152606082015282805260015afa15613802576000519073ffffffffffffffffffffffffffffffffffffffff821615613bb2575090565b6064905162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e61747572650000000000000000000000000000006044820152fd5b80519060209167ffffffffffffffff838301511673ffffffffffffffffffffffffffffffffffffffff9165ffffffffffff606084604087015116950151166040519485938785019760a086019060808a5285518092528060c088019601976000905b838210613c8a5750505050613c84955060408501526060840152608083015203601f198101835282611a8b565b51902090565b895181168852988201988a98509682019660019190910190613c57565b613c84613cb6613cf492613bf5565b926020810151815191606065ffffffffffff6040830151169101511515613d0760405196879460208601998a5260a0604087015260c0860190611c88565b601f199586868303016060870152613227565b91608084015260a083015203908101835282611a8b565b604051613c8481610717602082019460208652604083019061322756fea26469706673582212207aa666be0b9d7850844ff5eaab56efe13408b2eeee510a760be5075641222edf64736f6c63430008110033", } // NitroAdjudicatorABI is the input ABI used to generate the binding from. @@ -662,6 +677,27 @@ func (_NitroAdjudicator *NitroAdjudicatorTransactorSession) TransferAllAssets(ch return _NitroAdjudicator.Contract.TransferAllAssets(&_NitroAdjudicator.TransactOpts, channelId, outcome, stateHash) } +// ValidateUserOp is a paid mutator transaction binding the contract method 0x3a871cdd. +// +// Solidity: function validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes) userOp, bytes32 userOpHash, uint256 missingAccountFunds) returns(uint256 validationData) +func (_NitroAdjudicator *NitroAdjudicatorTransactor) ValidateUserOp(opts *bind.TransactOpts, userOp UserOperation, userOpHash [32]byte, missingAccountFunds *big.Int) (*types.Transaction, error) { + return _NitroAdjudicator.contract.Transact(opts, "validateUserOp", userOp, userOpHash, missingAccountFunds) +} + +// ValidateUserOp is a paid mutator transaction binding the contract method 0x3a871cdd. +// +// Solidity: function validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes) userOp, bytes32 userOpHash, uint256 missingAccountFunds) returns(uint256 validationData) +func (_NitroAdjudicator *NitroAdjudicatorSession) ValidateUserOp(userOp UserOperation, userOpHash [32]byte, missingAccountFunds *big.Int) (*types.Transaction, error) { + return _NitroAdjudicator.Contract.ValidateUserOp(&_NitroAdjudicator.TransactOpts, userOp, userOpHash, missingAccountFunds) +} + +// ValidateUserOp is a paid mutator transaction binding the contract method 0x3a871cdd. +// +// Solidity: function validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes) userOp, bytes32 userOpHash, uint256 missingAccountFunds) returns(uint256 validationData) +func (_NitroAdjudicator *NitroAdjudicatorTransactorSession) ValidateUserOp(userOp UserOperation, userOpHash [32]byte, missingAccountFunds *big.Int) (*types.Transaction, error) { + return _NitroAdjudicator.Contract.ValidateUserOp(&_NitroAdjudicator.TransactOpts, userOp, userOpHash, missingAccountFunds) +} + // NitroAdjudicatorAllocationUpdatedIterator is returned from FilterAllocationUpdated and is used to iterate over the raw logs and unpacked data for AllocationUpdated events raised by the NitroAdjudicator contract. type NitroAdjudicatorAllocationUpdatedIterator struct { Event *NitroAdjudicatorAllocationUpdated // Event containing the contract specifics and raw log diff --git a/node/engine/chainservice/eth_chainservice.go b/node/engine/chainservice/eth_chainservice.go index 0c834a7e9..66c9021c8 100644 --- a/node/engine/chainservice/eth_chainservice.go +++ b/node/engine/chainservice/eth_chainservice.go @@ -12,7 +12,9 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" ethTypes "github.com/ethereum/go-ethereum/core/types" + "github.com/stackup-wallet/stackup-bundler/pkg/userop" + bundler_client "github.com/mdehoog/go-bundler-client" "github.com/statechannels/go-nitro/channel/state" "github.com/statechannels/go-nitro/internal/logging" NitroAdjudicator "github.com/statechannels/go-nitro/node/engine/chainservice/adjudicator" @@ -77,6 +79,7 @@ type EthChainService struct { eventTracker *eventTracker eventSub ethereum.Subscription newBlockSub ethereum.Subscription + bundler bundler_client.Client } // MAX_QUERY_BLOCK_RANGE is the maximum range of blocks we query for events at once. @@ -137,7 +140,14 @@ func newEthChainService(chain ethChain, startBlock uint64, na *NitroAdjudicator. tracker := NewEventTracker(startBlock) // Use a buffered channel so we don't have to worry about blocking on writing to the channel. - ecs := EthChainService{chain, na, naAddress, caAddress, vpaAddress, txSigner, make(chan Event, 10), logger, ctx, cancelCtx, &sync.WaitGroup{}, tracker, nil, nil} + ecs := EthChainService{chain, na, naAddress, caAddress, vpaAddress, txSigner, make(chan Event, 10), logger, ctx, cancelCtx, &sync.WaitGroup{}, tracker, nil, nil, nil} + + bundler, err := bundler_client.DialContext(ctx, "http://localhost:3000/rpc") + if err != nil { + return nil, err + } + ecs.bundler = bundler + errChan, newBlockChan, eventChan, eventQuery, err := ecs.subscribeForLogs() if err != nil { return nil, err @@ -262,10 +272,36 @@ func (ecs *EthChainService) SendTransaction(tx protocols.ChainTransaction) error return err } - _, err = ecs.na.Deposit(txOpts, tokenAddress, tx.ChannelId(), holdings, amount) + abi, err := NitroAdjudicator.NitroAdjudicatorMetaData.GetAbi() if err != nil { return err } + calldata, err := abi.Pack("deposit", tokenAddress, tx.ChannelId(), holdings, amount) + if err != nil { + return err + } + + // TODO: Gas values are arbitrary for now + op := &userop.UserOperation{ + Sender: ecs.naAddress, + CallData: calldata, + Nonce: big.NewInt(0), + CallGasLimit: big.NewInt(0x5510), + VerificationGasLimit: big.NewInt(0x5fa67), + PreVerificationGas: big.NewInt(0xae7c), + MaxFeePerGas: big.NewInt(0x5a58b812), + MaxPriorityFeePerGas: big.NewInt(0x59682f00), + PaymasterAndData: ecs.naAddress[:], + } + const entrypointAddress = "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789" + + // Currently this submits the UserOperation to the bundler but the bundler fails with: + // UserOperation: Sender=0x5FbDB2315678afecb367f032d93F642f64180aa3 Nonce=1 EntryPoint=0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789 Paymaster=undefined + // failed: eth_sendUserOperation error: {"message":"account validation failed: AA23 reverted (or OOG)","code":-32500} + _, err = ecs.bundler.SendUserOperation(context.Background(), op, common.HexToAddress(entrypointAddress)) + if err != nil { + panic(err) + } } return nil case protocols.WithdrawAllTransaction: diff --git a/packages/nitro-protocol/contracts/NitroAdjudicator.sol b/packages/nitro-protocol/contracts/NitroAdjudicator.sol index 433dc66aa..9baa8ff4c 100644 --- a/packages/nitro-protocol/contracts/NitroAdjudicator.sol +++ b/packages/nitro-protocol/contracts/NitroAdjudicator.sol @@ -7,11 +7,13 @@ import {INitroAdjudicator} from './interfaces/INitroAdjudicator.sol'; import {ForceMove} from './ForceMove.sol'; import {IForceMoveApp} from './interfaces/IForceMoveApp.sol'; import {MultiAssetHolder} from './MultiAssetHolder.sol'; +import {IAccount} from './interfaces/IAccount.sol'; +import {UserOperation} from './interfaces/UserOperation.sol'; /** * @dev The NitroAdjudicator contract extends MultiAssetHolder and ForceMove */ -contract NitroAdjudicator is INitroAdjudicator, ForceMove, MultiAssetHolder { +contract NitroAdjudicator is INitroAdjudicator, ForceMove, MultiAssetHolder, IAccount { /** * @notice Finalizes a channel according to the given candidate, and liquidates all assets for the channel. * @dev Finalizes a channel according to the given candidate, and liquidates all assets for the channel. @@ -125,4 +127,10 @@ contract NitroAdjudicator is INitroAdjudicator, ForceMove, MultiAssetHolder { _executeSingleAssetExit(exit[assetIndex]); } } + + function validateUserOp( + UserOperation calldata userOp, + bytes32 userOpHash, + uint256 missingAccountFunds + ) external returns (uint256 validationData) {} } diff --git a/packages/nitro-protocol/contracts/interfaces/IAccount.sol b/packages/nitro-protocol/contracts/interfaces/IAccount.sol new file mode 100644 index 000000000..a850dde71 --- /dev/null +++ b/packages/nitro-protocol/contracts/interfaces/IAccount.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity 0.8.17; + +import './UserOperation.sol'; + +interface IAccount { + /** + * Validate user's signature and nonce + * the entryPoint will make the call to the recipient only if this validation call returns successfully. + * signature failure should be reported by returning SIG_VALIDATION_FAILED (1). + * This allows making a "simulation call" without a valid signature + * Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure. + * + * @dev Must validate caller is the entryPoint. + * Must validate the signature and nonce + * @param userOp - The operation that is about to be executed. + * @param userOpHash - Hash of the user's request data. can be used as the basis for signature. + * @param missingAccountFunds - Missing funds on the account's deposit in the entrypoint. + * This is the minimum amount to transfer to the sender(entryPoint) to be + * able to make the call. The excess is left as a deposit in the entrypoint + * for future calls. Can be withdrawn anytime using "entryPoint.withdrawTo()". + * In case there is a paymaster in the request (or the current deposit is high + * enough), this value will be zero. + * @return validationData - Packaged ValidationData structure. use `_packValidationData` and + * `_unpackValidationData` to encode and decode. + * <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure, + * otherwise, an address of an "authorizer" contract. + * <6-byte> validUntil - Last timestamp this operation is valid. 0 for "indefinite" + * <6-byte> validAfter - First timestamp this operation is valid + * If an account doesn't use time-range, it is enough to + * return SIG_VALIDATION_FAILED value (1) for signature failure. + * Note that the validation code cannot use block.timestamp (or block.number) directly. + */ + function validateUserOp( + UserOperation calldata userOp, + bytes32 userOpHash, + uint256 missingAccountFunds + ) external returns (uint256 validationData); +} diff --git a/packages/nitro-protocol/contracts/interfaces/UserOperation.sol b/packages/nitro-protocol/contracts/interfaces/UserOperation.sol new file mode 100644 index 000000000..a8b2d8479 --- /dev/null +++ b/packages/nitro-protocol/contracts/interfaces/UserOperation.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity 0.8.17; + +/** + * User Operation struct + * @param sender - The sender account of this request. + * @param nonce - Unique value the sender uses to verify it is not a replay. + * @param initCode - If set, the account contract will be created by this constructor/ + * @param callData - The method call to execute on this account. + * @param callGasLimit - The gas limit passed to the callData method call. + * @param verificationGasLimit - Gas used for validateUserOp and validatePaymasterUserOp. + * @param preVerificationGas - Gas not calculated by the handleOps method, but added to the gas paid. + * Covers batch overhead. + * @param maxFeePerGas - Same as EIP-1559 gas parameter. + * @param maxPriorityFeePerGas - Same as EIP-1559 gas parameter. + * @param paymasterAndData - If set, this field holds the paymaster address and paymaster-specific data. + * The paymaster will pay for the transaction instead of the sender. + * @param signature - Sender-verified signature over the entire request, the EntryPoint address and the chain ID. + */ +struct UserOperation { + address sender; + uint256 nonce; + bytes initCode; + bytes callData; + uint256 callGasLimit; + uint256 verificationGasLimit; + uint256 preVerificationGas; + uint256 maxFeePerGas; + uint256 maxPriorityFeePerGas; + bytes paymasterAndData; + bytes signature; +}