Dry Run Phase 3 Gov Proposal

We are successfully in Phase 2 now of the dry-run! This topic is now to discuss the proposal for advancing to Phase 3.

The first draft of the proposal code is here: namada-governance-upgrades/phase3/src/lib.rs at brent/dry-run Β· anoma/namada-governance-upgrades Β· GitHub. This has not been submitted on-chain yet.

A channel has been opened between the dry run network and Osmosis mainnet with the name transfer/channel-1/uosmo. This is hard-coded into the gov proposal code above.

We are proposing to support the flow of mainnet OSMO only in the Phase 3 proposal. The first proposed values of the mint and throughput rate limits are 10,000 OSMO.

In order to support shielded gas payment with a disposable key before NAM transfers are enabled in Phase 5, gas must be able to be paid using a non-native token. As a result, this proposal also allows OSMO to be used for gas payment at a rate of 1 uOSMO (0.000001 OSMO) per unit of gas.

Important note: the dry-run network will be taken offline at some point, so please do not transfer in any more OSMO than you are willing to lose. You will certainly be able to IBC transfer out your OSMO back to their mainnet before the dry-run ends, but in case of lapses in memory, any OSMO remaining in the network when the dry-run is taken offline will likely be lost.

Please offer your thoughts on all things related to the proposal!

8 Likes

Here are also some recommendations of actions to test during Phase 3 of the dry-run:

  • you can IBC transfer OSMO into Namada both transparently and by direct shielding
  • you can IBC transfer OSMO out of Namada
  • you can shield, unshield, and transfer mainnet OSMO within Namada
  • you are unable to shield NAM (before Phase 5)
  • you can use shielded-sync with and without a MASP indexer
  • you do not accrue NAM in your shielded balance from rewards (turned on in Phase 4)
  • you can pay gas using OSMO
  • you can pay gas using OSMO with your shielded balance for shielded txs (using a --disposable-gas-payer)
5 Likes

We Support this proposal :rocket:

The proposal is on-chain with ID of 2!

To verify the code, you can look here for the build artifacts that contain phase3.wasm, then compare the hashes with the CLI proposal query:

> sha256sum phase3.wasm 
45028620c50d9aeab6e5e8f7a158d364667be3e959e58184d7dfe3d01906721e  phase3.wasm

> namadac query-proposal --proposal-id 2 --node $DO_NODE

Last committed epoch: 25
Proposal Id: 2
Type: Default with Wasm
Author: tnam1qqgll8x8rz9fvtdv8q6n985za0vjvgyu0udxh7fp
Content: {"abstract": "Initialize phase 3 of the dry-run by enabling the flow of non-native assets into Namada for both shielded and transparent use", "discussions-to": "https://forum.namada.net/t/dry-run-phase-2-gov-proposal/1085", "title": "Phase 2 -> 3"}
Start Epoch: 26
End Epoch: 41
Activation Epoch: 42
Status: pending
Data: Hash: 45028620C50D9AEAB6E5E8F7A158D364667BE3E959E58184D7DFE3D01906721E
1 Like

Technically, we should verify the proposal WASM on a testnet before voting. In this case the dry-run could be considered a testnet, so it could be overkill to test it on a separate testnet.

But when we are going to do this for real, running the WASM on a parallel testnet before voting would be prudent. Who knows there are bugs that are only revealed on a network with more than 100 validators or a high amount of transactions?

2 Likes

I agree with this in principle. @Gavin thoughts?

Would Housefire and/or Campfire be suitable for testing proposals?

Yes, either one could be decided as the staging environment for this

Wow awesome work, thanks so much for testing @Daniel!

I am actually able to use the disposable gas payer as intended. I’ll share my workflow below. You can see that I unshield 591 uOSMO and pay a 50000 uOSMO gas fee using the disposable / ephemeral key.

> namadac balance --owner s-1 --token uosmo --node $RPC_TUDUDES
Last committed masp epoch: 11
transfer/channel-1/uosmo: 291591

> namadac unshield --source s-1 --target brent-1 --token uosmo --node $RPC_TUDUDES --amount 591 --disposable-gas-payer --gas-spending-key s-1 --gas-token uosmo
Enter your decryption password for s-1: 
Created disposable keypair with alias disposable-key-A0FA0FD493D6F23B4343B51D12011D59CCBD2155-created-at-1731761972
Transaction added to mempool.
Transaction hash: 5FB85A82D04A9822D45AD9D2DDB7D7A34266E0667B3513F845C1F6A26A290B21
Transaction 18280188DBA4ED637669F4171D90065E0310C542F050407B8F43B82A32499B6E was successfully applied at height 45032, consuming 47218 gas units.

> namadac shielded-sync --viewing-keys s-1 --node $RPC_TUDUDES --with-indexer https://masp.namada-dryrun.tududes.com/api/v1
==== Shielded sync started using indexer client ====

fetched : 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 39/39 [00:00<00:00, 51.61it/s]
scanned : 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 1/1 [00:00<00:00, 1.30it/s]
applied : 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 1/1 [00:00<00:00, 1.29it/s]

Syncing finished

> namadac balance --owner s-1 --token uosmo --node $RPC_TUDUDES 
Last committed masp epoch: 11
transfer/channel-1/uosmo: 241000
2 Likes

Good to know works with unshielding :saluting_face:. I have only tried to do so on a shielded to shielded transaction. Have you tried it out on your side?

The shielded transfer (shielded to shielded) using --disposable-gas-payer flag finally works. First, I have figured out that I didn’t have enough OSMO to pay for gas fees in the two spending keys I have used in the testings. So, I send a few to one of them. And then, it complained about transaction gas limit to be exceeded:

Encountered error while broadcasting transaction: StringTracer: server error: {"codespace":"","code":9,"data":"","log":"Mempool validation failed: Error trying to apply a transaction: Gas error: Transaction gas limit exceeded","hash":"0DF185F5C936696430B963DD754E145494BEBF26BAF0BE7C7B283BA6FD6C7966"}

I had to add to add --gas-limit 80000 so as to troubleshoot it and make it functional.

I just now also tested out unshielding IBC transfers using --disposable-gas-payer flag. They are working too :partying_face:

1 Like

Reposting as the original message above it’s been deleted accidentally

I have been testing out all these actions and almost all of them seem to work as expected. I have only faced issues while using --disposable-gas-payer flag, a priori seems that it’s not working, or pehaps I’m using it in a wrong way (posted the command below too).

  • you can IBC transfer OSMO into Namada both transparently and by direct shielding
    Transfer OSMO from Osmosis to Namada transparently:
namadac balance --owner a --token transfer/channel-1/uosmo
transfer/channel-1/uosmo: 100000

Transfer OSMO from Osmosis to Namada’s MASP (shielding IBC transfer):

namadac balance --owner masptest --token transfer/channel-1/uosmo
Last committed masp epoch: 11
transfer/channel-1/uosmo: 20000
  • you can IBC transfer OSMO out of Namada
    Transfer OSMO from Namada to Osmosis (unshielding IBC transfer):

Transaction hash: 9FFB1EA2FF8FE3540D230E947CE554F4B52D84B0CA322F92CC0CDC310B414D6A

Received on Osmosis:

osmosisd q bank balances osmo1ytrmydn4uzcgj9hqdhn727r3w7tgns37mqllha --node https://rpc.osmosis.zone:443
balances:
- amount: "50"
  denom: uosmo

Transfer OSMO from Namada to Osmosis transparently:

Transaction hash: 8962491BAF5A6C1EA26428B97D43604737A13BFCB92C19B96A9B0EA6C81DB414

Received on Osmosis:

osmosisd q bank balances osmo1ytrmydn4uzcgj9hqdhn727r3w7tgns37mqllha --node https://rpc.osmosis.zone:443
balances:
- amount: "100"
  denom: uosmo
pagination:
  next_key: null
  total: "0"
  • you can shield, unshield, and transfer mainnet OSMO within Namada
    Transparent transfer (transparent to transparent):
namadac balance --owner t --token transfer/channel-1/uosmo
transfer/channel-1/uosmo: 83

Transaction hash: 56AEE4BCB9411D4DCD41A4C488F5638A9186D3DC91A6E4654005604F6EE2DB7F

Shielding transfer (transparent to shielded):

namadac balance --owner b --token transfer/channel-1/uosmo
Last committed masp epoch: 11
transfer/channel-1/uosmo: 99

Transaction hash: 082A0E461BFA30C8CC47910C2146A22B0918958B23F65048B565CEA9A144042A

Unshielding transfer (shielded to transparent):

namadac balance --owner t --token transfer/channel-1/uosmo
transfer/channel-1/uosmo: 105

Transaction hash: CC8BD4A4752A17B62F0248E11BEC9667F08DBD3585CFFAF5D827A7678C7D1A67

Shielded transfer (shielded to shielded):

namadac balance --owner b --token transfer/channel-1/uosmo
Last committed masp epoch: 11
transfer/channel-1/uosmo: 155

Transaction hash: 56914B26946AF4E232C0BD2E2FA2478EDA6AA53F5F49B6B1C59ACC04C0D91C51

  • you are unable to shield NAM (before Phase 5)
Errors: [
  [
    "tnam1pyqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqej6juv",
    "Native VP error: Native token deposit isn't allowed"
  ]
]

Transaction hash: 5841F9C02783610A3059E6148FE8DC8BB6F17F3630B5182170A64B4CAFD90475

  • you can use shielded-sync with and without a MASP indexer
    with: yes
    without: yes
  • you do not accrue NAM in your shielded balance from rewards (turned on in Phase 4)
    Not receiving rewards:
namadac balance --owner masptest --token NAM
Last committed masp epoch: 11
nam: 0
  • you can pay gas using OSMO
    Transparent transfer (transparent to transparent):

Transaction hash: 55FC67A938DD9E0784953B8269AA7E9EA7F641A0DA4D646E52A35187A4352953

namadac balance --owner t  --token transfer/channel-1/uosmo                                                       
transfer/channel-1/uosmo: 188

Transaction hash: 9F738613212C1AECF1C7D7567AF2849A5DDD0B3C51ADAC888E3364470D3973F1

Shielding transfer (transparent to shielded):

namadac balance --owner b --token transfer/channel-1/uosmo
Last committed masp epoch: 11
transfer/channel-1/uosmo: 376

Transaction hash: F718800F5FFFF30F5655AF166D41D2499EF57804E81EE0C2E24D4A19CC0E061F

Unshielding transfer (shielded to transparent):

namadac balance --owner t --token transfer/channel-1/uosmo
transfer/channel-1/uosmo: 210

Transaction hash: B8B6B266E1FD5705DBB0F47AC95C1A26BC1F93117372E9B628772753DE31C06F

  • you can pay gas using OSMO with your shielded balance for shielded txs (using a --disposable-gas-payer)

I wasn’t able to use --disposable-gas-payer gas to pay gas fees with OSMO for a shielded to shielded transaction, it outputs this error message below. I wonder if this is happening because disposable gas payer logic can’t yet work with tokens others than native one - as it complains about insufficient funds, meaning that perhaps is looking for NAM instead of the token denom passed in the --gas-token flag.

Created disposable keypair with alias disposable-key-C8ACD37A214A8604649D1AECF5FACFAEFBB3D00B-created-at-1731755234
Error:
   0: Insufficient funds
   1: Insufficient funds

If I use only --gas-spending-key, it works fine and I can pay gas fees with OSMO for a shielded to shielded transaction:

namadac transfer --source masptest --target masp-addr2 --token transfer/channel-1/uosmo --amount 54 --gas-token transfer/channel-1/uosmo --gas-spending-key masptest --signing-keys t

Transaction hash: F0EA3212225DDAB031CD08477278A634ED207AE65562D84996ACA9A7EB6B49A7

namadac balance --owner b --token transfer/channel-1/uosmo
Last committed masp epoch: 11
transfer/channel-1/uosmo: 153
2 Likes

yeah i think all wasm should be executed on Housefire first, we could propose having this be part of our social expectations in our community’s governance process

cc @brentstone