Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
5979 commits
Select commit Hold shift + click to select a range
7a832c5
forking(grpc): remove duplicated pools query block in fetchPoolData
devin-ai-integration[bot] Aug 14, 2025
32a7f07
forking(grpc): support single-pool GET via gRPC and align iterator ke…
devin-ai-integration[bot] Aug 14, 2025
560e4f8
forking(grpc): avoid single-pool gRPC query for THOR.* derived assets…
devin-ai-integration[bot] Aug 14, 2025
857715b
forking(grpc): normalize pool iterator key to keeper format for singl…
devin-ai-integration[bot] Aug 14, 2025
baa2686
proto(gateway): allow multi-segment assets for pools via {asset=**}; …
devin-ai-integration[bot] Aug 14, 2025
faf9280
Merge pull request #2 from LZeroAnalytics/devin/1755205633-single-poo…
fraVlaca Aug 14, 2025
5f0ef2d
gateway: support multi-segment assets for asset params using {asset=*…
devin-ai-integration[bot] Aug 14, 2025
dc8456f
gateway: regenerate after {asset=**} bindings; update grpc-gateway an…
devin-ai-integration[bot] Aug 14, 2025
7cf4e3d
forking(grpc): implement single GETs for node, liquidity provider, bo…
devin-ai-integration[bot] Aug 14, 2025
6d09530
Revert "forking(grpc): implement single GETs for node, liquidity prov…
devin-ai-integration[bot] Aug 14, 2025
2f4c392
Merge remote 'til/forking-capabilities': resolve conflicts in generat…
devin-ai-integration[bot] Aug 14, 2025
a706908
forking(grpc): single-GET mappings for node, LPs, borrowers; fix pars…
devin-ai-integration[bot] Aug 14, 2025
b0fdac8
forking(grpc): fix contract asset normalization for single GETs (CHAI…
devin-ai-integration[bot] Aug 14, 2025
57a6f44
forking(grpc): fix misplaced saver functions; close LP function properly
devin-ai-integration[bot] Aug 14, 2025
dca9948
forking(grpc): normalize asset keys to dot-form; map CHAIN/ETH and CH…
devin-ai-integration[bot] Aug 14, 2025
7a38390
forking(grpc): handle NotFound in single GETs (pool/node/LP/saver/bor…
devin-ai-integration[bot] Aug 14, 2025
4d5fba7
forking(grpc): add list fallbacks for LP/Saver/Borrower single GETs; …
devin-ai-integration[bot] Aug 14, 2025
3527a8a
query: accept CHAIN/0x... slash-form assets by resolving to canonical…
fraVlaca Aug 19, 2025
2581e51
query: improve slash-form contract normalization in Pool; tolerant 0x…
fraVlaca Aug 19, 2025
a7a6fab
query(proto): add legacy HTTP additional_bindings for LP/Saver/Borrow…
fraVlaca Aug 19, 2025
0c26317
fix: correct typo in error message
fraVlaca Aug 20, 2025
2f72b6b
feat: add MimirBypassDecorator to bypass fees for mimir transactions
fraVlaca Aug 20, 2025
ad426cc
fix: handle insufficient bond module balance in mimir handler
fraVlaca Aug 20, 2025
1f04af7
Added AuthZ.
marcosnc Aug 21, 2025
a4c826e
Merge pull request #3 from LZeroAnalytics/mnc/forking-capabilities-authz
tiljrd Aug 21, 2025
ce69275
app: deduplicate KVStoreKeys to fix auth ('acc') key collision after …
tiljrd Aug 21, 2025
6116429
Merge pull request #4 from LZeroAnalytics/devin/1755797622-fix-authz-…
tiljrd Aug 21, 2025
e5e0fb1
Allow multi-arch builds
tiljrd Aug 23, 2025
ca2e45b
app: add on-demand WASM materializer writing to data/wasm/wasm and pi…
tiljrd Aug 24, 2025
62f5d61
app: add on-demand WASM materializer writing to data/wasm/wasm and pi…
tiljrd Aug 24, 2025
248b347
app: wrap cosmwasm Msg/Query to materialize+pin code before executes/…
tiljrd Aug 24, 2025
098df73
app: wrap cosmwasm Msg/Query to materialize+pin code before executes/…
tiljrd Aug 24, 2025
9849125
app: wire wasm wrappers, store wasmDir, make InitializePinnedCodes no…
tiljrd Aug 24, 2025
62cab43
app: wire wasm wrappers, store wasmDir, make InitializePinnedCodes no…
tiljrd Aug 24, 2025
7612a33
app: wire wasmd v0.53 QueryServer via wasmkeeper.NewGrpcQuerier
tiljrd Aug 24, 2025
77b658d
app: wire wasmd v0.53 QueryServer via wasmkeeper.NewGrpcQuerier
tiljrd Aug 24, 2025
30fc699
app: wasm materializer and query wrapper finalized; use MsgServer Pin…
tiljrd Aug 24, 2025
dd4dbf5
app: wasm materializer and query wrapper finalized; use MsgServer Pin…
tiljrd Aug 24, 2025
430e993
forking: add CosmWasm gRPC query client and materialize-on-demand in …
tiljrd Aug 24, 2025
f2ff4f9
forking: add CosmWasm gRPC query client and materialize-on-demand in …
tiljrd Aug 24, 2025
fa6cda3
forking: fix import block in remote client; add wasmd query client cl…
tiljrd Aug 24, 2025
bde3b17
forking: fix import block in remote client; add wasmd query client cl…
tiljrd Aug 24, 2025
913236e
forking: restore grpc status/codes imports used by isNotFoundErr
tiljrd Aug 24, 2025
74f54f7
forking: restore grpc status/codes imports used by isNotFoundErr
tiljrd Aug 24, 2025
f3e397d
app: add forkGRPC/forkHeight fields; wasm wrappers: fix ContractInfo …
tiljrd Aug 24, 2025
788d2ae
app: add forkGRPC/forkHeight fields; wasm wrappers: fix ContractInfo …
tiljrd Aug 24, 2025
1730c0f
forking: serve wasm KV via gRPC; add AllContractState range in GetRange
tiljrd Aug 24, 2025
3e92def
forking: serve wasm KV via gRPC; add AllContractState range in GetRange
tiljrd Aug 24, 2025
cb2bb3c
forking: wasm grpc routing only for code bytes and raw contract state…
tiljrd Aug 24, 2025
08959ce
forking: wasm grpc routing only for code bytes and raw contract state…
tiljrd Aug 24, 2025
5a45e50
forking: serve wasm ContractInfo via gRPC for KV overlay (0x02) to sa…
tiljrd Aug 24, 2025
270a60e
forking: serve wasm ContractInfo via gRPC for KV overlay (0x02) to sa…
tiljrd Aug 24, 2025
a4a7e6c
forking: fix CosmWasm key parsing to use varint length (ContractInfo/…
tiljrd Aug 24, 2025
417df79
forking: fix CosmWasm key parsing to use varint length (ContractInfo/…
tiljrd Aug 24, 2025
8bb6cbe
forking: allow wasm remote fetches during genesis to enable mainnet c…
tiljrd Aug 24, 2025
bb88006
forking: allow wasm remote fetches during genesis to enable mainnet c…
tiljrd Aug 24, 2025
09b15e2
forking: attach x-cosmos-block-height to wasm gRPC queries and fix pa…
tiljrd Aug 24, 2025
4a59096
forking: attach x-cosmos-block-height to wasm gRPC queries and fix pa…
tiljrd Aug 24, 2025
ac3382e
forking: fix extra brace causing parse error; ensure withHeight helpe…
tiljrd Aug 24, 2025
f5b30e9
forking: fix extra brace causing parse error; ensure withHeight helpe…
tiljrd Aug 24, 2025
ea487d0
forking: tolerate non-length-prefixed WASM keys (ContractInfo/Contrac…
tiljrd Aug 24, 2025
3b7e1f8
forking: tolerate non-length-prefixed WASM keys (ContractInfo/Contrac…
tiljrd Aug 24, 2025
2ca2129
forking: clamp wasm gRPC query height to remote latest to avoid futur…
tiljrd Aug 24, 2025
fb9746d
forking: clamp wasm gRPC query height to remote latest to avoid futur…
tiljrd Aug 24, 2025
42f047d
forking/wasm: tighten key parsing; treat 'no such contract' as not-fo…
tiljrd Aug 24, 2025
149fadf
forking/wasm: tighten key parsing; treat 'no such contract' as not-fo…
tiljrd Aug 24, 2025
94b0ac6
forking: always allow remote fetch for wasm store except during Check…
tiljrd Aug 24, 2025
f9644de
forking: always allow remote fetch for wasm store except during Check…
tiljrd Aug 24, 2025
f6add65
app: materializer pin via PermissionedKeeper to ensure pinned-codes w…
tiljrd Aug 24, 2025
5561904
app: materializer pin via PermissionedKeeper to ensure pinned-codes w…
tiljrd Aug 24, 2025
ddce06b
forking/wasm: correct varint prefix creation for contract store iter …
tiljrd Aug 24, 2025
2d98eaa
forking/wasm: correct varint prefix creation for contract store iter …
tiljrd Aug 24, 2025
d595d16
forking/wasm: strictly decode varint-prefixed 20-byte addresses; remo…
tiljrd Aug 24, 2025
2a9f708
forking/wasm: strictly decode varint-prefixed 20-byte addresses; remo…
tiljrd Aug 24, 2025
625d882
forking/wasm: be tolerant parsing of ContractInfo/ContractStore keys;…
tiljrd Aug 24, 2025
e0538ce
forking/wasm: be tolerant parsing of ContractInfo/ContractStore keys;…
tiljrd Aug 24, 2025
2151f41
forking/wasm: broaden ContractInfo/ContractStore key parsing; allow w…
tiljrd Aug 24, 2025
a992699
forking/wasm: broaden ContractInfo/ContractStore key parsing; allow w…
tiljrd Aug 24, 2025
1212eba
app: fix wasmd v0.53 ContractInfo value type in Query response
tiljrd Aug 24, 2025
4dc49c7
app: fix wasmd v0.53 ContractInfo value type in Query response
tiljrd Aug 24, 2025
0b3b717
forking: swallow remote wasm GET/RANGE errors to avoid RPC EOF; disab…
tiljrd Aug 24, 2025
4e3125f
forking: swallow remote wasm GET/RANGE errors to avoid RPC EOF; disab…
tiljrd Aug 24, 2025
dfe9180
forking/wasm: add strict ContractInfo key decoder (0x02) and use it i…
tiljrd Aug 24, 2025
48db0aa
forking/wasm: add strict ContractInfo key decoder (0x02) and use it i…
tiljrd Aug 24, 2025
9263e5d
forking/wasm: accept varint-prefixed bech32 address for ContractInfo …
tiljrd Aug 24, 2025
5520387
forking/wasm: accept varint-prefixed bech32 address for ContractInfo …
tiljrd Aug 24, 2025
9b66495
forking/wasm: align key decoding with wasmd v0.53 (0x01 Code, 0x02 Co…
tiljrd Aug 24, 2025
3313f6e
forking/wasm: align key decoding with wasmd v0.53 (0x01 Code, 0x02 Co…
tiljrd Aug 24, 2025
4baf11e
forking: disallow remote wasm fetches during genesis; allow outside g…
tiljrd Aug 24, 2025
b523475
forking: disallow remote wasm fetches during genesis; allow outside g…
tiljrd Aug 24, 2025
6d50a30
forking/wasm: return CodeInfo for 0x01; fix ContractStore 0x03 prefix…
tiljrd Aug 24, 2025
41cdf9a
forking/wasm: return CodeInfo for 0x01; fix ContractStore 0x03 prefix…
tiljrd Aug 24, 2025
edd925a
forking/wasm: for 0x01 keys marshal store CodeInfo by mapping QueryCo…
tiljrd Aug 24, 2025
5d9aa1e
forking/wasm: for 0x01 keys marshal store CodeInfo by mapping QueryCo…
tiljrd Aug 24, 2025
8c19720
forking/wasm: fix CodeInfo struct field name to InstantiateConfig for…
tiljrd Aug 24, 2025
5aade97
forking/wasm: fix CodeInfo struct field name to InstantiateConfig for…
tiljrd Aug 24, 2025
f85585a
app/wasm: fetch wasm code via app.forkGRPC at fork height; ensure mat…
tiljrd Aug 24, 2025
3c664c2
app/wasm: fetch wasm code via app.forkGRPC at fork height; ensure mat…
tiljrd Aug 24, 2025
119e5af
forking/wasm: strict decode for ContractInfo (0x02) and ContractStore…
tiljrd Aug 24, 2025
80d13b1
forking/wasm: strict decode for ContractInfo (0x02) and ContractStore…
tiljrd Aug 24, 2025
cd1d662
forking/store: allow wasm remote fetch when height=0 (use latest); fi…
tiljrd Aug 24, 2025
8c72884
forking/store: allow wasm remote fetch when height=0 (use latest); fi…
tiljrd Aug 24, 2025
d4defbc
forking/grpc: correct wasm key mappings (0x03 CodeBytes, 0x05 Contrac…
tiljrd Aug 24, 2025
bec7d1b
forking/grpc: correct wasm key mappings (0x03 CodeBytes, 0x05 Contrac…
tiljrd Aug 24, 2025
606eabd
forking/wasm: accept 32-byte ContractInfo key payloads; derive acc ad…
tiljrd Aug 24, 2025
552c7bf
forking/wasm: accept 32-byte ContractInfo key payloads; derive acc ad…
tiljrd Aug 24, 2025
253986c
forking/store: log wasm 0x02 ContractInfo key length and hex for debu…
tiljrd Aug 24, 2025
1015a2e
forking/store: log wasm 0x02 ContractInfo key length and hex for debu…
tiljrd Aug 24, 2025
e8abafb
forking/store: always log wasm 0x02 ContractInfo key at Get start for…
tiljrd Aug 24, 2025
0440150
forking/store: always log wasm 0x02 ContractInfo key at Get start for…
tiljrd Aug 24, 2025
65d7f50
forking/wasm: instrument 0x02 ContractInfo parse and remote fetch to …
tiljrd Aug 24, 2025
8c7c7e7
forking/wasm: instrument 0x02 ContractInfo parse and remote fetch to …
tiljrd Aug 24, 2025
29e27d4
app/wasm: materialize code to both data/wasm/wasm and data/wasm paths…
tiljrd Aug 24, 2025
60ec6dd
app/wasm: materialize code to both data/wasm/wasm and data/wasm paths…
tiljrd Aug 24, 2025
255d2e7
wasm(query): fallback Code/CodeInfo via remote gRPC to materialize+pi…
tiljrd Aug 24, 2025
584d7d6
wasm(query): fallback Code/CodeInfo via remote gRPC to materialize+pi…
tiljrd Aug 24, 2025
3ca19fd
fix: remove duplicate package block in query_wasm_wrapper to restore …
tiljrd Aug 24, 2025
70834d8
fix: remove duplicate package block in query_wasm_wrapper to restore …
tiljrd Aug 24, 2025
4b9c2b2
app/wasm-msg: ensure materialize by address before Execute; remote gR…
tiljrd Aug 24, 2025
8fd4e31
app/wasm-msg: ensure materialize by address before Execute; remote gR…
tiljrd Aug 24, 2025
c155b57
app/wasm: materialize code (local first, fallback via fork gRPC) and …
tiljrd Aug 24, 2025
f687f81
app/wasm: materialize code (local first, fallback via fork gRPC) and …
tiljrd Aug 24, 2025
ad2992f
app/wasm: name on-disk wasm file by CodeHash/DataHash (and sha256 fal…
tiljrd Aug 24, 2025
1d63d36
app/wasm: name on-disk wasm file by CodeHash/DataHash (and sha256 fal…
tiljrd Aug 24, 2025
ba5fd7f
wasm(query,msg): retry without height on pruned/invalid height for re…
tiljrd Aug 24, 2025
8743210
wasm(query,msg): retry without height on pruned/invalid height for re…
tiljrd Aug 24, 2025
7871b06
app: write wasm files under $HOME/wasm/wasm by setting wasmDir to nod…
tiljrd Aug 24, 2025
dd9b76c
app: write wasm files under $HOME/wasm/wasm by setting wasmDir to nod…
tiljrd Aug 24, 2025
cbc94e0
app: remove unused filepath import after wasmDir change
tiljrd Aug 24, 2025
3b01037
app: remove unused filepath import after wasmDir change
tiljrd Aug 24, 2025
3484799
forking: fix misplaced parseWasmContractAddrStrict insertion; keep st…
tiljrd Aug 24, 2025
0e7b640
forking: fix misplaced parseWasmContractAddrStrict insertion; keep st…
tiljrd Aug 24, 2025
82d2dfe
forking: fix stray duplicate return/brace in decodeStoreKVPairs; rest…
tiljrd Aug 24, 2025
d5a8d58
forking: fix stray duplicate return/brace in decodeStoreKVPairs; rest…
tiljrd Aug 24, 2025
faf9d5c
app: write wasm files under /home/ubuntu/data/wasm/wasm by setting wa…
tiljrd Aug 24, 2025
da421e8
app: write wasm files under /home/ubuntu/data/wasm/wasm by setting wa…
tiljrd Aug 24, 2025
529206f
app/wasm: fix TLS dial for remote Code() fetch; set crypto/tls Server…
tiljrd Aug 24, 2025
6e10b2c
app/wasm: fix TLS dial for remote Code() fetch; set crypto/tls Server…
tiljrd Aug 24, 2025
e8e5af3
app/wasm: retry remote Code() without height when pinned-height fails…
tiljrd Aug 24, 2025
2f74c5c
app/wasm: retry remote Code() without height when pinned-height fails…
tiljrd Aug 24, 2025
bb542ff
wasm(query): add remote fallback for Codes/PinnedCodes and materializ…
tiljrd Aug 25, 2025
8a29649
wasm(query): add remote fallback for Codes/PinnedCodes and materializ…
tiljrd Aug 25, 2025
698336f
forking(wasm): synthesize CodeInfo items for [0x01,0x02) in GetRange …
tiljrd Aug 25, 2025
3f147b4
forking(wasm): synthesize CodeInfo items for [0x01,0x02) in GetRange …
tiljrd Aug 25, 2025
637f415
forking(wasm): synthesize pinned codes for [0x05,0x06) in GetRange
tiljrd Aug 25, 2025
a17b241
forking(wasm): synthesize pinned codes for [0x05,0x06) in GetRange
tiljrd Aug 25, 2025
a31cd02
app(wasm): install local CodeInfo before PinCode for on-demand wasm m…
tiljrd Aug 25, 2025
5865b08
app(wasm): install local CodeInfo before PinCode for on-demand wasm m…
tiljrd Aug 25, 2025
811faf3
app(wasm): use AccessConfig value type for InstantiatePermission/Inst…
tiljrd Aug 25, 2025
e46993e
app(wasm): use AccessConfig value type for InstantiatePermission/Inst…
tiljrd Aug 25, 2025
fbb7b48
app(wasm): install CodeInfo before writing wasm files; ensure wasmvm …
tiljrd Aug 25, 2025
bfd11b1
app(wasm): install CodeInfo before writing wasm files; ensure wasmvm …
tiljrd Aug 25, 2025
e18fd03
forking: wrap thorchain types.Msg to materialize/pin WASM on Execute/…
tiljrd Aug 25, 2025
a7fcbe1
forking: wrap thorchain types.Msg to materialize/pin WASM on Execute/…
tiljrd Aug 25, 2025
46d12fa
wasm: fix nil check on ContractInfo in thorchain msg wrapper (struct …
tiljrd Aug 25, 2025
e583389
wasm: fix nil check on ContractInfo in thorchain msg wrapper (struct …
tiljrd Aug 25, 2025
206dec0
thorchain msg wrapper: add logs around wasm Execute/Instantiate/Migra…
tiljrd Aug 25, 2025
8dbf3b8
thorchain msg wrapper: add logs around wasm Execute/Instantiate/Migra…
tiljrd Aug 25, 2025
bd0166d
wasm(forking): ensure CodeHash defaults to bytecode SHA256; install C…
tiljrd Aug 25, 2025
33fb894
wasm(forking): ensure CodeHash defaults to bytecode SHA256; install C…
tiljrd Aug 25, 2025
3462b7e
wasm(materialize): gunzip remote bytecode when needed; write uncompre…
tiljrd Aug 25, 2025
cf72325
wasm(materialize): gunzip remote bytecode when needed; write uncompre…
tiljrd Aug 25, 2025
496b63e
wasm(materialize): set CodeInfo.CodeHash = sha256(raw) and write cano…
tiljrd Aug 25, 2025
fb2654c
wasm(materialize): set CodeInfo.CodeHash = sha256(raw) and write cano…
tiljrd Aug 25, 2025
02f3bcb
wasm(materialize): also write wasm file to data/wasm/wasm/<hash>.wasm…
tiljrd Aug 25, 2025
e1e8446
wasm(materialize): also write wasm file to data/wasm/wasm/<hash>.wasm…
tiljrd Aug 25, 2025
4551ff5
wasm(materialize): write checksum file without extension alongside .w…
tiljrd Aug 25, 2025
67d9aa1
wasm(materialize): write checksum file without extension alongside .w…
tiljrd Aug 25, 2025
6394395
forking(wasm grpc): set TLS SNI and MinVersion=TLS1.2 when grpcs/443 …
tiljrd Aug 25, 2025
8c21ff0
forking(wasm grpc): set TLS SNI and MinVersion=TLS1.2 when grpcs/443 …
tiljrd Aug 25, 2025
eb86f5e
wasm(materialize): prefer on-chain CodeHash for filename; compute sha…
tiljrd Aug 25, 2025
e3cc74f
wasm(materialize): prefer on-chain CodeHash for filename; compute sha…
tiljrd Aug 25, 2025
4e022d1
wasm(materialize): always use sha256(uncompressed raw) for CodeInfo.C…
tiljrd Aug 25, 2025
6d0274a
wasm(materialize): always use sha256(uncompressed raw) for CodeInfo.C…
tiljrd Aug 25, 2025
a204666
wasm(exec): add diagnostics for expected wasmvm paths and file presen…
tiljrd Aug 25, 2025
5a79672
wasm(exec): add diagnostics for expected wasmvm paths and file presen…
tiljrd Aug 25, 2025
877ff48
wasm(exec): diagnostics for expected wasmvm path; import fixes
tiljrd Aug 25, 2025
a45aefc
wasm(exec): diagnostics for expected wasmvm path; import fixes
tiljrd Aug 25, 2025
db7f207
wasm(exec): fix wrapper imports and remove duplicate/malformed Execut…
tiljrd Aug 25, 2025
f4548e4
wasm(exec): fix wrapper imports and remove duplicate/malformed Execut…
tiljrd Aug 25, 2025
72f2aa3
wasm(exec mgr): add minimal diagnostics for code hash and expected wa…
tiljrd Aug 25, 2025
c54c4f6
wasm(exec mgr): add minimal diagnostics for code hash and expected wa…
tiljrd Aug 25, 2025
2352ee4
wasm(open): add init/canonical path diagnostics around keeper and Exe…
tiljrd Aug 25, 2025
104e22a
wasm(open): add init/canonical path diagnostics around keeper and Exe…
tiljrd Aug 25, 2025
7ff2acb
materialize: write wasm files to state/wasm to match wasmvm open path
tiljrd Aug 25, 2025
5c4dcd1
materialize: write wasm files to state/wasm to match wasmvm open path
tiljrd Aug 25, 2025
bc703ca
logs: print canonical state/wasm path in debug messages
tiljrd Aug 25, 2025
7fc38f1
logs: print canonical state/wasm path in debug messages
tiljrd Aug 25, 2025
65479ca
forking(wasm): on-demand AllContractState fetch + wasm range support;…
tiljrd Aug 26, 2025
4ff52f4
forking(wasm): on-demand AllContractState fetch + wasm range support;…
tiljrd Aug 26, 2025
4d16f7d
forking(wasm): remove malformed wasm block from extractMimirKeyFromPa…
tiljrd Aug 26, 2025
ea615d3
forking(wasm): remove malformed wasm block from extractMimirKeyFromPa…
tiljrd Aug 26, 2025
ff6a833
forking(wasm): support 0x03/0x05 contract-store prefixes and bulk All…
tiljrd Aug 26, 2025
664d588
forking(wasm): support 0x03/0x05 contract-store prefixes and bulk All…
tiljrd Aug 26, 2025
2e4ba5c
forking: wasm contract-store AllContractState fallback for 0x03 prefi…
tiljrd Aug 26, 2025
7ebfce8
forking: wasm contract-store AllContractState fallback for 0x03 prefi…
tiljrd Aug 26, 2025
912fa03
wasm(query): accept all gRPC queries from contracts; forking: allow r…
tiljrd Aug 26, 2025
5519d81
wasm(query): accept all gRPC queries from contracts; forking: allow r…
tiljrd Aug 26, 2025
96c0d47
forking(wasm): minor touch to client.go to include in series
tiljrd Aug 26, 2025
307153f
forking(wasm): minor touch to client.go to include in series
tiljrd Aug 26, 2025
a4f73ce
forking(wasm): bypass halt checks in forking mode to enable CosmWasm …
tiljrd Aug 29, 2025
a5f1221
forking(wasm): bypass halt checks in forking mode to enable CosmWasm …
tiljrd Aug 29, 2025
85ad55d
forking(wasm): bypass THORChain halts in forking mode for Send/Deposi…
tiljrd Aug 29, 2025
7bb6ca2
forking(wasm): bypass THORChain halts in forking mode for Send/Deposi…
tiljrd Aug 29, 2025
352029e
Merge pull request #7 from LZeroAnalytics/devin/1756473885-wasm-forki…
tiljrd Aug 29, 2025
18d90a5
Merge pull request #7 from LZeroAnalytics/devin/1756473885-wasm-forki…
tiljrd Aug 29, 2025
f1b94fc
forking: call EndBlock on forking services in PostBlocker to close bl…
tiljrd Aug 29, 2025
7fa74ac
forking: call EndBlock on forking services in PostBlocker to close bl…
tiljrd Aug 29, 2025
ab2f425
forking: call EndBlock() after BaseApp.FinalizeBlock to close forking…
tiljrd Aug 29, 2025
59ba586
forking: call EndBlock() after BaseApp.FinalizeBlock to close forking…
tiljrd Aug 29, 2025
7fc32ee
forking: ensure EndBlock always runs by deferring after entering Fina…
tiljrd Aug 29, 2025
3b14d3e
forking: ensure EndBlock always runs by deferring after entering Fina…
tiljrd Aug 29, 2025
e60efbd
Merge pull request #8 from LZeroAnalytics/devin/1756507696-forking-en…
tiljrd Aug 30, 2025
ba05cb1
Merge pull request #8 from LZeroAnalytics/devin/1756507696-forking-en…
tiljrd Aug 30, 2025
3c7a563
fork(wasm): gate remote reads to on-demand only (user-api queries, De…
tiljrd Aug 30, 2025
33e6d29
fork(wasm): gate remote reads to on-demand only (user-api queries, De…
tiljrd Aug 30, 2025
a7d854b
fork(wasm): enable CLI/gRPC smart queries and on-demand materializati…
tiljrd Aug 30, 2025
74be86c
fork(wasm): enable CLI/gRPC smart queries and on-demand materializati…
tiljrd Aug 30, 2025
4fce2f8
forking(client): extend remote GetRange to support lp/ and mimir/ pre…
tiljrd Sep 5, 2025
753552d
forking(client): fix Mimir range builder to use resp.Mimirs and types…
tiljrd Sep 5, 2025
e13f751
Merge remote-tracking branch 'github/devin/1755993593-wasm-on-demand-…
tiljrd Sep 8, 2025
39cfae4
forking(client): broaden Mimir key detection in fetchViaGRPC and add …
tiljrd Sep 11, 2025
fa878ac
wasm(forking): bypass permission checks in forking mode so deploy/ins…
tiljrd Sep 11, 2025
2df8adb
mimir(forking): accept local signer in forking mode; add minimal succ…
tiljrd Sep 11, 2025
81a9bea
mimir(forking): uppercase Mimir keys in keeper; apply effective value…
tiljrd Sep 12, 2025
2aa19bd
ante(forking): log MsgMimir ante bypass to confirm tx reaches ante in…
tiljrd Sep 12, 2025
5b4e527
forking(store): allow remote reads during CheckTx/ReCheckTx so txs ca…
tiljrd Sep 12, 2025
feeba41
app: write [wasm-open] init/keeper logs to stderr to avoid contaminat…
tiljrd Sep 12, 2025
3eb442f
app: dedupe os import; stderr for wasm-open logs to keep CLI JSON clean
tiljrd Sep 12, 2025
afc049e
app/wasm: move [wasm-open] prints to stderr to avoid breaking CLI JSO…
tiljrd Sep 12, 2025
dc7f053
halt(forking): bypass halt/pause checks under forking.Enabled to allo…
tiljrd Sep 12, 2025
bd81ae6
forking(store): swallow non-wasm remote errors (return nil) to avoid …
tiljrd Sep 12, 2025
6216096
forking(client): avoid remote auth/bank fetch to prevent account/sequ…
tiljrd Sep 12, 2025
bffcbe9
forking(client): allow remote auth/bank fetches so CheckTx can read a…
tiljrd Sep 12, 2025
02ab1ea
forking(store): disallow remote reads during CheckTx/ReCheckTx to avo…
tiljrd Sep 12, 2025
905ee41
forking(store): allow remote reads in CheckTx only for auth/bank to u…
tiljrd Sep 12, 2025
cbd000f
forking(store): allow remote reads during CheckTx for acc/auth/bank t…
tiljrd Sep 12, 2025
6887763
ante: run MimirBypassDecorator after SetUpContext/Gas to avoid CheckT…
tiljrd Sep 12, 2025
4124cd4
cli: accept --fork.* flags on root and bind flags in CLI paths so tho…
tiljrd Sep 12, 2025
662c636
cli: register forking flags on tx/query commands to enable --fork.* f…
tiljrd Sep 12, 2025
413e24a
cli(thorchain): register forking flags on thorchain tx root so mimir …
tiljrd Sep 12, 2025
138ccf5
cli(forking): set --fork.* as persistent flags so subcommands inherit…
tiljrd Sep 12, 2025
22d3097
cli: bind inherited/persistent flags to viper so --fork.* propagate t…
tiljrd Sep 12, 2025
5f1c93d
forking(client): fetch balances via Cosmos bank gRPC with height-awar…
tiljrd Sep 14, 2025
664c680
forking(store): disallow remote reads for bank store to make balances…
tiljrd Sep 15, 2025
ac27f55
Merge pull request #9 from 0xBloctopus/devin/1694789974-local-only-ba…
tiljrd Sep 15, 2025
d7b62a7
api(gateway): forward height for /bank and /auth prefixes; set defaul…
tiljrd Sep 16, 2025
aa1d26a
api(gateway): remove ineffective grpc-gateway timeout; keep broader h…
tiljrd Sep 16, 2025
5f077a1
api(gateway): narrow height forwarding to specific bank/auth endpoint…
tiljrd Sep 16, 2025
223636e
Merge pull request #11 from 0xBloctopus/devin/1758056363-fix-rest-bal…
tiljrd Sep 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions app/ante.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,14 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
// must be first to ensure that injected txs bypass the remaining ante handlers, as they do not have gas.
ebifrost.NewInjectedTxDecorator(),

// Check for MsgMimir early and skip fee deduction
thorchain.NewMimirBypassDecorator(options.THORChainKeeper),

ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first

// replace gas meter immediately after setting up ctx
thorchain.NewGasDecorator(options.THORChainKeeper),

// Check for MsgMimir and bypass remaining ante after context/gas are set
thorchain.NewMimirBypassDecorator(options.THORChainKeeper),

wasmkeeper.NewLimitSimulationGasDecorator(options.WasmConfig.SimulationGasLimit), // after setup context to enforce limits early
wasmkeeper.NewCountTXDecorator(options.TXCounterStoreService),
wasmkeeper.NewGasRegisterDecorator(options.WasmKeeper.GetGasRegister()),
Expand Down
48 changes: 32 additions & 16 deletions app/app.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package app

import (
"os"
"encoding/json"
"errors"
"fmt"
"io"
"net/http"
"os"
"path/filepath"
"sort"
"sync"
Expand Down Expand Up @@ -163,6 +163,7 @@ type THORChainApp struct {
DenomKeeper denomkeeper.Keeper
msgServiceRouter *MsgServiceRouter // router for redirecting Msg service messages
WasmKeeper wasmkeeper.Keeper
wasmDir string

// forking services
forkingServices []forking.ForkingKVStoreService
Expand All @@ -178,6 +179,9 @@ type THORChainApp struct {
configurator module.Configurator
queryServiceRouter *QueryServiceRouter
once sync.Once
forkGRPC string
forkHeight int64

}


Expand Down Expand Up @@ -389,9 +393,15 @@ func NewChainApp(
CacheSize: cast.ToInt(appOpts.Get("fork.cache-size")),
GasCostPerFetch: cast.ToUint64(appOpts.Get("fork.gas-cost-per-fetch")),
}
forking.Enabled = true

logger.Info("Forking config", "height", forkingConfig.ForkHeight, "cache_enabled", forkingConfig.CacheEnabled, "cache_size", forkingConfig.CacheSize)

app.forkGRPC = forkingGRPC
app.forkHeight = forkingConfig.ForkHeight

if forkingConfig.TrustingPeriod == 0 {

forkingConfig.TrustingPeriod = 24 * time.Hour
}
if forkingConfig.MaxClockDrift == 0 {
Expand Down Expand Up @@ -491,22 +501,20 @@ func NewChainApp(
app.appCodec, thorchainStoreService, app.BankKeeper, app.AccountKeeper, app.UpgradeKeeper,
)

wasmDir := filepath.Join(homePath, "data") // "wasm" subdirectory created here
wasmDir := filepath.Join(homePath, "data")
app.wasmDir = wasmDir
wasmConfig, err := wasm.ReadWasmConfig(appOpts)
if err != nil {
panic(fmt.Sprintf("error while reading wasm config: %s", err))
}
fmt.Fprintf(os.Stderr, "[wasm-open] init wasmDir=%s homePath=%s forking=%v\n", wasmDir, homePath, forkingEnabled)

wasmOpts = append(wasmOpts,
wasmkeeper.WithQueryPlugins(
&wasmkeeper.QueryPlugins{
Grpc: wasmkeeper.AcceptListGrpcQuerier(
wasmAcceptedQueries,
app.BaseApp.GRPCQueryRouter(),
app.appCodec),
},
),
wasmkeeper.WithGasRegister(WasmGasRegister),
wasmkeeper.WithQueryPlugins(&wasmkeeper.QueryPlugins{
Stargate: wasmkeeper.AcceptListStargateQuerier(wasmAcceptedQueries, app.GRPCQueryRouter(), app.appCodec),
Grpc: wasmkeeper.AcceptListGrpcQuerier(wasmAcceptedQueries, app.GRPCQueryRouter(), app.appCodec),
}),
)

// The last arguments can contain custom message handlers, and custom query handlers,
Expand Down Expand Up @@ -534,6 +542,7 @@ func NewChainApp(
authtypes.NewModuleAddress(thorchain.ModuleName).String(),
wasmOpts...,
)
fmt.Fprintf(os.Stderr, "[wasm-open] keeper constructed with wasmDir=%s\n", wasmDir)

app.DenomKeeper = denomkeeper.NewKeeper(
app.appCodec,
Expand All @@ -549,6 +558,8 @@ func NewChainApp(

mgrs := thorchain.NewManagers(app.ThorchainKeeper, app.appCodec, thorchainStoreService, app.BankKeeper, app.AccountKeeper, app.UpgradeKeeper, app.WasmKeeper)
app.msgServiceRouter.AddCustomRoute("cosmos.bank.v1beta1.Msg", thorchain.NewBankSendHandler(thorchain.NewSendHandler(mgrs)))
app.msgServiceRouter.AddCustomRoute("cosmwasm.wasm.v1.Msg", NewWasmMsgWrapper(app, &app.WasmKeeper, wasmkeeper.NewMsgServerImpl(&app.WasmKeeper)))
app.msgServiceRouter.AddCustomRoute("types.Msg", NewThorchainMsgWrapper(app, &app.WasmKeeper, thorchain.NewMsgServerImpl(mgrs)))

thorchainModule := thorchain.NewAppModule(mgrs, telemetryEnabled, testApp)

Expand Down Expand Up @@ -670,9 +681,9 @@ func NewChainApp(

// Uncomment if you want to set a custom migration order here.
// app.ModuleManager.SetOrderMigrations(custom order)

app.queryServiceRouter = NewQueryServiceRouter(app.BaseApp.GRPCQueryRouter())
app.queryServiceRouter.AddCustomRoute("cosmos.bank.v1beta1.Query", NewBankQueryWrapper(app.BankKeeper))
app.queryServiceRouter.AddCustomRoute("cosmwasm.wasm.v1.Query", NewWasmQueryWrapper(app, &app.WasmKeeper, wasmkeeper.NewGrpcQuerier(app.appCodec, wasmStoreService, &app.WasmKeeper, wasmConfig.SmartQueryGasLimit)))
app.configurator = module.NewConfigurator(app.appCodec, app.msgServiceRouter, app.queryServiceRouter)
err = app.ModuleManager.RegisterServices(app.configurator)
if err != nil {
Expand Down Expand Up @@ -781,7 +792,7 @@ func NewChainApp(

// Initialize pinned codes in wasmvm as they are not persisted there
if err := app.WasmKeeper.InitializePinnedCodes(ctx); err != nil {
panic(fmt.Sprintf("failed initialize pinned codes %s", err))
app.BaseApp.Logger().Error("failed initialize pinned codes", "err", err)
}
}

Expand All @@ -794,10 +805,6 @@ func (app *THORChainApp) FinalizeBlock(req *abci.RequestFinalizeBlock) (*abci.Re
app.once.Do(func() {
ctx := app.NewUncachedContext(false, tmproto.Header{})
if _, err := app.ConsensusParamsKeeper.Params(ctx, &consensusparamtypes.QueryParamsRequest{}); err != nil {
// prevents panic: consensus key is nil: collections: not found: key 'no_key' of type github.com/cosmos/gogoproto/tendermint.types.ConsensusParams
// sdk 47:
// Migrate Tendermint consensus parameters from x/params module to a dedicated x/consensus module.
// see https://github.com/cosmos/cosmos-sdk/blob/v0.47.0/simapp/upgrades.go#L66
baseAppLegacySS := app.GetSubspace(baseapp.Paramspace).WithKeyTable(paramstypes.ConsensusParamsKeyTable())
err = baseapp.MigrateParams(sdk.UnwrapSDKContext(ctx), baseAppLegacySS, app.ConsensusParamsKeeper.ParamsStore)
if err != nil {
Expand All @@ -806,6 +813,14 @@ func (app *THORChainApp) FinalizeBlock(req *abci.RequestFinalizeBlock) (*abci.Re
}
})

defer func() {
for _, service := range app.forkingServices {
if e := service.EndBlock(); e != nil {
app.Logger().Error("failed to end block on forking service", "error", e)
}
}
}()

return app.BaseApp.FinalizeBlock(req)
}

Expand All @@ -827,6 +842,7 @@ func (app *THORChainApp) PreBlocker(ctx sdk.Context, req *abci.RequestFinalizeBl
return app.ModuleManager.PreBlock(ctx)
}


func (a *THORChainApp) Configurator() module.Configurator {
return a.configurator
}
Expand Down
209 changes: 209 additions & 0 deletions app/msg_thorchain_wrapper.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,209 @@
package app

import (
"context"
"fmt"
"net"
"strings"

sdk "github.com/cosmos/cosmos-sdk/types"

wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
cwtypes "github.com/CosmWasm/wasmd/x/wasm/types"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/credentials/insecure"
"google.golang.org/grpc/metadata"

thtypes "gitlab.com/thorchain/thornode/v3/x/thorchain/types"
)

type ThorchainMsgWrapper struct {
thtypes.UnimplementedMsgServer
app *THORChainApp
keeper *wasmkeeper.Keeper
original thtypes.MsgServer
}

func NewThorchainMsgWrapper(app *THORChainApp, k *wasmkeeper.Keeper, original thtypes.MsgServer) *ThorchainMsgWrapper {
return &ThorchainMsgWrapper{
app: app,
keeper: k,
original: original,
}
}

func (w *ThorchainMsgWrapper) withMaterialized(goCtx context.Context, codeID uint64) (context.Context, error) {
if codeID != 0 {
if err := w.app.materializeAndPinWasm(sdk.UnwrapSDKContext(goCtx), codeID); err != nil {
return goCtx, err
}
}
return goCtx, nil
}

func (w *ThorchainMsgWrapper) ensureMaterializedByAddress(ctx sdk.Context, bech32Addr string) {
addr, err := sdk.AccAddressFromBech32(bech32Addr)
if err == nil {
if ci := w.keeper.GetContractInfo(ctx, addr); ci != nil {
_ = w.app.materializeAndPinWasm(ctx, ci.CodeID)
return
}
}
target := w.app.forkGRPC
if strings.TrimSpace(target) == "" {
target = "grpc.thor.pfc.zone:443"
}
useTLS := false
normalized := strings.TrimSpace(target)
if strings.HasPrefix(normalized, "grpcs://") || strings.HasPrefix(normalized, "https://") {
useTLS = true
normalized = strings.TrimPrefix(strings.TrimPrefix(normalized, "grpcs://"), "https://")
} else {
if _, p, e := net.SplitHostPort(normalized); e == nil && p == "443" {
useTLS = true
}
}
var dialOpt grpc.DialOption
if useTLS {
dialOpt = grpc.WithTransportCredentials(credentials.NewTLS(nil))
} else {
dialOpt = grpc.WithTransportCredentials(insecure.NewCredentials())
}
conn, derr := grpc.Dial(normalized, dialOpt)
if derr != nil {
return
}
defer conn.Close()
wq := cwtypes.NewQueryClient(conn)
md := metadata.New(nil)
if w.app.forkHeight > 0 {
md.Set("x-cosmos-block-height", fmt.Sprintf("%d", w.app.forkHeight))
}
qctx := metadata.NewOutgoingContext(ctx.Context(), md)
resp, rerr := wq.ContractInfo(qctx, &cwtypes.QueryContractInfoRequest{Address: bech32Addr})
if rerr != nil && shouldRetryWithoutHeight(rerr) {
resp, rerr = wq.ContractInfo(ctx.Context(), &cwtypes.QueryContractInfoRequest{Address: bech32Addr})
}
if rerr != nil || resp == nil || resp.ContractInfo.CodeID == 0 {
return
}
_ = w.app.materializeAndPinWasm(ctx, resp.ContractInfo.CodeID)
}


func (w *ThorchainMsgWrapper) StoreCode(ctx context.Context, req *cwtypes.MsgStoreCode) (*cwtypes.MsgStoreCodeResponse, error) {
return w.original.StoreCode(ctx, req)
}

func (w *ThorchainMsgWrapper) InstantiateContract(goCtx context.Context, req *cwtypes.MsgInstantiateContract) (*cwtypes.MsgInstantiateContractResponse, error) {
fmt.Printf("[thorchain-msg] InstantiateContract codeID=%d admin=%s\n", req.CodeID, req.Admin)
if _, err := w.withMaterialized(goCtx, req.CodeID); err != nil {
}
return w.original.InstantiateContract(goCtx, req)
}

func (w *ThorchainMsgWrapper) InstantiateContract2(goCtx context.Context, req *cwtypes.MsgInstantiateContract2) (*cwtypes.MsgInstantiateContract2Response, error) {
fmt.Printf("[thorchain-msg] InstantiateContract2 codeID=%d admin=%s\n", req.CodeID, req.Admin)
if _, err := w.withMaterialized(goCtx, req.CodeID); err != nil {
}
return w.original.InstantiateContract2(goCtx, req)
}

func (w *ThorchainMsgWrapper) ExecuteContract(goCtx context.Context, req *cwtypes.MsgExecuteContract) (*cwtypes.MsgExecuteContractResponse, error) {
fmt.Printf("[thorchain-msg] ExecuteContract contract=%s sender=%s\n", req.Contract, req.Sender)
ctx := sdk.UnwrapSDKContext(goCtx)
w.ensureMaterializedByAddress(ctx, req.Contract)
fmt.Printf("[thorchain-msg] ExecuteContract dispatched contract=%s\n", req.Contract)
return w.original.ExecuteContract(goCtx, req)
}

func (w *ThorchainMsgWrapper) MigrateContract(goCtx context.Context, req *cwtypes.MsgMigrateContract) (*cwtypes.MsgMigrateContractResponse, error) {
fmt.Printf("[thorchain-msg] MigrateContract codeID=%d contract=%s\n", req.CodeID, req.Contract)
if _, err := w.withMaterialized(goCtx, req.CodeID); err != nil {
}
return w.original.MigrateContract(goCtx, req)
}

func (w *ThorchainMsgWrapper) SudoContract(ctx context.Context, req *cwtypes.MsgSudoContract) (*cwtypes.MsgSudoContractResponse, error) {
return w.original.SudoContract(ctx, req)
}

func (w *ThorchainMsgWrapper) UpdateAdmin(ctx context.Context, req *cwtypes.MsgUpdateAdmin) (*cwtypes.MsgUpdateAdminResponse, error) {
return w.original.UpdateAdmin(ctx, req)
}

func (w *ThorchainMsgWrapper) ClearAdmin(ctx context.Context, req *cwtypes.MsgClearAdmin) (*cwtypes.MsgClearAdminResponse, error) {
return w.original.ClearAdmin(ctx, req)
}


func (w *ThorchainMsgWrapper) Ban(ctx context.Context, msg *thtypes.MsgBan) (*thtypes.MsgEmpty, error) {
return w.original.Ban(ctx, msg)
}
func (w *ThorchainMsgWrapper) Deposit(ctx context.Context, msg *thtypes.MsgDeposit) (*thtypes.MsgEmpty, error) {
return w.original.Deposit(ctx, msg)
}
func (w *ThorchainMsgWrapper) ErrataTx(ctx context.Context, msg *thtypes.MsgErrataTx) (*thtypes.MsgEmpty, error) {
return w.original.ErrataTx(ctx, msg)
}
func (w *ThorchainMsgWrapper) ErrataTxQuorum(ctx context.Context, msg *thtypes.MsgErrataTxQuorum) (*thtypes.MsgEmpty, error) {
return w.original.ErrataTxQuorum(ctx, msg)
}
func (w *ThorchainMsgWrapper) Mimir(ctx context.Context, msg *thtypes.MsgMimir) (*thtypes.MsgEmpty, error) {
return w.original.Mimir(ctx, msg)
}
func (w *ThorchainMsgWrapper) ModifyLimitSwap(ctx context.Context, msg *thtypes.MsgModifyLimitSwap) (*thtypes.MsgEmpty, error) {
return w.original.ModifyLimitSwap(ctx, msg)
}
func (w *ThorchainMsgWrapper) NetworkFee(ctx context.Context, msg *thtypes.MsgNetworkFee) (*thtypes.MsgEmpty, error) {
return w.original.NetworkFee(ctx, msg)
}
func (w *ThorchainMsgWrapper) NetworkFeeQuorum(ctx context.Context, msg *thtypes.MsgNetworkFeeQuorum) (*thtypes.MsgEmpty, error) {
return w.original.NetworkFeeQuorum(ctx, msg)
}
func (w *ThorchainMsgWrapper) NodePauseChain(ctx context.Context, msg *thtypes.MsgNodePauseChain) (*thtypes.MsgEmpty, error) {
return w.original.NodePauseChain(ctx, msg)
}
func (w *ThorchainMsgWrapper) ObservedTxIn(ctx context.Context, msg *thtypes.MsgObservedTxIn) (*thtypes.MsgEmpty, error) {
return w.original.ObservedTxIn(ctx, msg)
}
func (w *ThorchainMsgWrapper) ObservedTxOut(ctx context.Context, msg *thtypes.MsgObservedTxOut) (*thtypes.MsgEmpty, error) {
return w.original.ObservedTxOut(ctx, msg)
}
func (w *ThorchainMsgWrapper) ObservedTxQuorum(ctx context.Context, msg *thtypes.MsgObservedTxQuorum) (*thtypes.MsgEmpty, error) {
return w.original.ObservedTxQuorum(ctx, msg)
}
func (w *ThorchainMsgWrapper) ThorSend(ctx context.Context, msg *thtypes.MsgSend) (*thtypes.MsgEmpty, error) {
return w.original.ThorSend(ctx, msg)
}
func (w *ThorchainMsgWrapper) SetIPAddress(ctx context.Context, msg *thtypes.MsgSetIPAddress) (*thtypes.MsgEmpty, error) {
return w.original.SetIPAddress(ctx, msg)
}
func (w *ThorchainMsgWrapper) SetNodeKeys(ctx context.Context, msg *thtypes.MsgSetNodeKeys) (*thtypes.MsgEmpty, error) {
return w.original.SetNodeKeys(ctx, msg)
}
func (w *ThorchainMsgWrapper) Solvency(ctx context.Context, msg *thtypes.MsgSolvency) (*thtypes.MsgEmpty, error) {
return w.original.Solvency(ctx, msg)
}
func (w *ThorchainMsgWrapper) SolvencyQuorum(ctx context.Context, msg *thtypes.MsgSolvencyQuorum) (*thtypes.MsgEmpty, error) {
return w.original.SolvencyQuorum(ctx, msg)
}
func (w *ThorchainMsgWrapper) TssKeysignFail(ctx context.Context, msg *thtypes.MsgTssKeysignFail) (*thtypes.MsgEmpty, error) {
return w.original.TssKeysignFail(ctx, msg)
}
func (w *ThorchainMsgWrapper) TssPool(ctx context.Context, msg *thtypes.MsgTssPool) (*thtypes.MsgEmpty, error) {
return w.original.TssPool(ctx, msg)
}
func (w *ThorchainMsgWrapper) SetVersion(ctx context.Context, msg *thtypes.MsgSetVersion) (*thtypes.MsgEmpty, error) {
return w.original.SetVersion(ctx, msg)
}
func (w *ThorchainMsgWrapper) ProposeUpgrade(ctx context.Context, msg *thtypes.MsgProposeUpgrade) (*thtypes.MsgEmpty, error) {
return w.original.ProposeUpgrade(ctx, msg)
}
func (w *ThorchainMsgWrapper) ApproveUpgrade(ctx context.Context, msg *thtypes.MsgApproveUpgrade) (*thtypes.MsgEmpty, error) {
return w.original.ApproveUpgrade(ctx, msg)
}
func (w *ThorchainMsgWrapper) RejectUpgrade(ctx context.Context, msg *thtypes.MsgRejectUpgrade) (*thtypes.MsgEmpty, error) {
return w.original.RejectUpgrade(ctx, msg)
}
Loading