informalsystems / multisig Goto Github PK
View Code? Open in Web Editor NEWPainless multisig for many keys across many cosmos-sdk chains
License: Apache License 2.0
Painless multisig for many keys across many cosmos-sdk chains
License: Apache License 2.0
Command:
multisig tx push unsigned.json osmosis key-local
unsigned.json:
{"body":{"messages":[{"@type":"/cosmos.gov.v1beta1.MsgVote","proposal_id":"1","voter":"osmo1...,"option":"VOTE_OPTION_YES"}],"memo":"","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[],"fee":{"amount":[],"gas_limit":"350000","payer":"","granter":""}},"signatures":[]}
Error:
panic: interface conversion: interface {} is nil, not []interface {}
goroutine 1 [running]:
main.parseDenomFromJson({0xc0002c6800, 0x16e, 0x200})
/home/andy/go/src/github.com/informalsystems/multisig/util.go:114 +0x1c5
main.cmdPush(0x10693e0?, {0xc0002d4420?, 0x3?, 0x3?})
/home/andy/go/src/github.com/informalsystems/multisig/main.go:342 +0xe8
github.com/spf13/cobra.(*Command).execute(0x10693e0, {0xc0002d43f0, 0x3, 0x3})
/home/andy/go/pkg/mod/github.com/spf13/[email protected]/command.go:852 +0x67c
github.com/spf13/cobra.(*Command).ExecuteC(0x10675e0)
/home/andy/go/pkg/mod/github.com/spf13/[email protected]/command.go:960 +0x39c
github.com/spf13/cobra.(*Command).Execute(...)
/home/andy/go/pkg/mod/github.com/spf13/[email protected]/command.go:897
main.main()
/home/andy/go/src/github.com/informalsystems/multisig/main.go:45 +0x25
It seems that the logic to parse the denom from the unsigned.json is failing.
prepare for new release v0.4.0
Currently when executing the multisig list
command, the output only displays the folders and files uploaded to S3. A better output would be a table with some details about the transactions, this could even leverage the description parameter that was added in the tool.
When broadcasting a {"body":{"messages":[{"@type":"/cosmos.staking.v1beta1.MsgDelegate"...
on Akash got the error
Error: error unmarshalling result: unknown field "mempoolError" in types.ResponseCheckTx
upgrading cosmos SDK version to prevent some dependency vulnerabilities
multisig broadcast
states:
-k, --key string name of the local multisig key name, flag overrides the config
config.toml
states:
[[keys]]
# 2/4 (af,eb,gs,mc), ceph val oper standard
name = "ceph-main"
localname = "cec_2of4_multisig"
address = "ixo1x20lytyf6zkcrv5edpkfkn8sz578qg5s2g53ty"
If I run multisig sign
without -k
it fails but if I run it with -k cec_2of4_multisig
it succeeds. I believe -k
should get the data from the localname
config if it is not defined.
Ideally denom can become part of the config slash gotten from the chain registry so we never have to worry about it like this
Originally posted by @ebuchman in #5 (comment)
Make the denom part of the config and also retrieve from the chain registry. Tx push should ensure that the txs are using correct denoms
Have a command that you can undelegate from a validator and also with the option --all
that generate multiple transactions each with around 5 messages (one message per validator).
Add a --fees
and --gas
parameters to the tx commands.
For example
--fees 1000uatom
Tried to broadcast a tx but the path is empty on S3, instead of error saying files are not there, got a message saying needed signatures. It would make more sense show the right reason why it failed to broadcast (no files).
Got this error:
$ multisig broadcast cosmos ceph-cosmos
Error: Insufficient signatures for broadcast. Requires 2, got 0
But reason is fails is this:
$ multisig raw cat cosmos ceph-cosmos
No files in cosmos/ceph-cosmos
Re-evaluate the need to have the chain-id
in the config. A better approach would be to retrieve it from the chain itself like the account number and sequence. Had an issue that the chain had upgraded and the id had changed but the config had the old id.
Or at least check the local chain-id value against the real value from chain and prevent a transaction to be pushed if they differ (but then if you need to retrieve the remote chain-id what is the value of having a local config of that?).
Michael's push panicked:
multisig tx push ../Downloads/unsigned4.json cosmos icf-fc
panic: interface conversion: interface {} is nil, not []interface {}
goroutine 1 [running]:
main.parseDenomFromJson(0xc0000d4900, 0x699, 0x899, 0x0, 0x0, 0x0, 0x0)
/Users/niedm/multisig/util.go:114 +0x286
main.cmdPush(0x1cd8100, 0xc0002b23c0, 0x3, 0x3, 0x0, 0x0)
/Users/niedm/multisig/main.go:342 +0x145
[github.com/spf13/cobra.(*Command).execute(0x1cd8100](http://github.com/spf13/cobra.(*Command).execute(0x1cd8100), 0xc0002b2390, 0x3, 0x3, 0x1cd8100, 0xc0002b2390)
/Users/niedm/goApps/pkg/mod/github.com/spf13/[email protected]/command.go:852 +0x47c
[github.com/spf13/cobra.(*Command).ExecuteC(0x1cd7480](http://github.com/spf13/cobra.(*Command).ExecuteC(0x1cd7480), 0x0, 0x0, 0x0)
/Users/niedm/goApps/pkg/mod/github.com/spf13/[email protected]/command.go:960 +0x375
[github.com/spf13/cobra.(*Command).Execute(...)](http://github.com/spf13/cobra.(*Command).Execute(...))
/Users/niedm/goApps/pkg/mod/github.com/spf13/[email protected]/command.go:897
main.main()
/Users/niedm/multisig/main.go:45 +0x2d
macbook-pro:multisig niedm$
unsigned4.json:
{
"body": {
"messages": [
{
"@type": "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward",
"delegator_address": "cosmos1z8mzakma7vnaajysmtkwt4wgjqr2m84tzvyfkz",
"validator_address": "cosmosvaloper14kn0kk33szpwus9nh8n87fjel8djx0y070ymmj"
},
{
"@type": "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward",
"delegator_address": "cosmos1z8mzakma7vnaajysmtkwt4wgjqr2m84tzvyfkz",
"validator_address": "cosmosvaloper1hjct6q7npsspsg3dgvzk3sdf89spmlpfdn6m9d"
},
{
"@type": "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward",
"delegator_address": "cosmos1z8mzakma7vnaajysmtkwt4wgjqr2m84tzvyfkz",
"validator_address": "cosmosvaloper1clpqr4nrk4khgkxj78fcwwh6dl3uw4epsluffn"
},
{
"@type": "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward",
"delegator_address": "cosmos1z8mzakma7vnaajysmtkwt4wgjqr2m84tzvyfkz",
"validator_address": "cosmosvaloper1ehkfl7palwrh6w2hhr2yfrgrq8jetgucudztfe"
},
{
"@type": "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward",
"delegator_address": "cosmos1z8mzakma7vnaajysmtkwt4wgjqr2m84tzvyfkz",
"validator_address": "cosmosvaloper1kgddca7qj96z0qcxr2c45z73cfl0c75p7f3s2e"
}
],
"memo": "",
"timeout_height": "0",
"extension_options": [],
"non_critical_extension_options": []
},
"auth_info": {
"signer_infos": [],
"fee": {
"amount": [
{
"denom": "uatom",
"amount": "10000"
}
],
"gas_limit": "1200000",
"payer": "",
"granter": ""
}
},
"signatures": []
}
Possibly the file has some issues, but we still shouldn't panic.
Capture the tasks outlined by @ebuchman in the TODO section of the README.md and put on the board
> multisig tx authz grant juno ceph-main juno1rq9rdx739n0fss49lrca566hha02352mah34rk vote 365
panic: runtime error: index out of range [0] with length 0
goroutine 1 [running]:
main.getDenomFromRegistry({0x7ff7bfeff998, 0x4})
/Users/greg/git/informal/multisig/util.go:93 +0x659
main.getDenom(0xc00032e400?, {0x7ff7bfeff998?, 0x4?})
/Users/greg/git/informal/multisig/util.go:51 +0x105
main.cmdGrantAuthz(0x1c6c700?, {0xc0000985a0?, 0x5?, 0x5?})
/Users/greg/git/informal/multisig/main.go:186 +0x4df
github.com/spf13/cobra.(*Command).execute(0x1c6c700, {0xc000098550, 0x5, 0x5})
/Users/greg/go/pkg/mod/github.com/spf13/[email protected]/command.go:852 +0x67c
github.com/spf13/cobra.(*Command).ExecuteC(0x1c6a680)
/Users/greg/go/pkg/mod/github.com/spf13/[email protected]/command.go:960 +0x39c
github.com/spf13/cobra.(*Command).Execute(...)
/Users/greg/go/pkg/mod/github.com/spf13/[email protected]/command.go:897
main.main()
/Users/greg/git/informal/multisig/main.go:45 +0x25```
This is not in particular directly related to multisig but I will open an issue since this might be related to the authz support in multisig.
A vote authz permission (/cosmos.gov.v1beta1.MsgVote
) was granted from the multisig CEC-I account to Josh's key.
Josh tried to vote on a CosmosHub proposal using this key but it's not working. When executing the gaiad tx authz exec
command he gets an error message. Not sure what is causing that so keeping this issue open for tracking.
Generated a tx for the gov proposal vote:
gaiad tx gov vote 69 no --from <CEC-I cosmos multisig address> --fees 3000uatom --chain-id cosmoshub-4 --generate-only > tx.json
Then when executing that tx using authz he gets an error
gaiad tx authz exec tx.json --from <CEC-I cosmos josh address>
Error:
Error: error parsing public key: invalid magic in compressed pubkey string: 0
Usage:
gaiad tx authz exec [msg_tx_json_file] --from [grantee] [flags]
tx bank send
transaction sending some tokens back to the account that funded his accounttx authz exec
many times (before and after the tx send) to ensure that his account existed on chaingaiad tx authz exec
passing the --ledger
flag. But he doesn't even get a prompt in his Ledger, it errors out before that.gaiad query authz grants <josh cosmos> <cosmos multisig>
grants:
- authorization:
'@type': /cosmos.authz.v1beta1.GenericAuthorization
msg: /cosmos.gov.v1beta1.MsgVote
expiration: "2023-05-03T17:57:46Z"
pagination:
next_key: null
total: "0"
After broadcast a message there was an error, looks like something related to parsing the result which caused the files not to be deleted from S3
Add a new command to multisig to make it easier to create a transaction to delegate tokens to a validator.
related: #31
For reference: https://github.com/informalsystems/validator/issues/248
Add a flag to the tx command that allows to add a description for the transaction and store it in the signdata file.
multisig couldn't understand the axelar json response and it didn't delete the files
From Michael:
Can I use the multsig tool to get a unstaking transaction signed?¨
sorry, meant rewards claim
shouldnt these flags be on the general txCmd rather than the specific voteCmd? presumably we'll want them for all txs we generate
Originally posted by @ebuchman in #5 (comment)
so we can revoke stuff
[the purpose of this issue is to highlight my intention to work in this direction]
One of the points of the TODO section is the "test suite that spins up some local nodes and multisigs for testing".
I think that it's a thing of high priority (while it's in the "Mid Priority" section) because it blocks the development of the other features. Since the purpose of the tool is to interact with the blockchain, S3, and local tools, checking if your code didn't break anything is really difficult (you have to configure an S3 bucket, run a local testnet/use RPC of a public testnet node, make a multisig round manually and so on). It makes the development of such an awesome tool uncomfortable.
The approach I'm going to implement is:
Trying to submit a tgrade tx with multisig fails because it cannot handle "@type":"/cosmos.vesting.v1beta1.ContinuousVestingAccount"
Need to implement support for handling this account types when retrieving the account number and the sequence number.
Attempted to broadcast multiple transactions and got the following result
No index specified
➜ transactions multisig broadcast cosmos ceph-main
Error: Insufficient signatures for broadcast. Requires 2, got 0
Usage:
multisig broadcast <chain name> <key name> [flags]
Flags:
-h, --help help for broadcast
-i, --index int index of the tx to broadcast
-n, --node string node address to broadcast too. flag overrides config
2022/04/04 17:54:08 Insufficient signatures for broadcast. Requires 2, got 0
Index 0
➜ transactions multisig broadcast cosmos ceph-main -i 0
Error: Insufficient signatures for broadcast. Requires 2, got 0
Usage:
multisig broadcast <chain name> <key name> [flags]
Flags:
-h, --help help for broadcast
-i, --index int index of the tx to broadcast
-n, --node string node address to broadcast too. flag overrides config
2022/04/04 17:54:15 Insufficient signatures for broadcast. Requires 2, got 0
Index 1
➜ transactions multisig broadcast cosmos ceph-main -i 1
Error: Insufficient signatures for broadcast. Requires 2, got 0
Usage:
multisig broadcast <chain name> <key name> [flags]
Flags:
-h, --help help for broadcast
-i, --index int index of the tx to broadcast
-n, --node string node address to broadcast too. flag overrides config
2022/04/04 17:54:17 Insufficient signatures for broadcast. Requires 2, got 0
Signature files are there
➜ transactions multisig list cosmos ceph-cosmos
cosmos/ceph-cosmos/
cosmos/ceph-cosmos/0/eb.json
cosmos/ceph-cosmos/0/gs.json
cosmos/ceph-cosmos/0/signdata.json
cosmos/ceph-cosmos/0/unsigned.json
cosmos/ceph-cosmos/1/eb.json
cosmos/ceph-cosmos/1/gs.json
cosmos/ceph-cosmos/1/signdata.json
cosmos/ceph-cosmos/1/unsigned.json
When executing a tx broadcast
the command doesn't add --node
in the [binary] tx multisign
executed command
Scenario:
Michael created a transaction and we were pushing it to AWS using tx push
. A wild warning appeared:
WARNING: Denom ‘uatom’ in the unsigned json is different from the denom ‘’ in the config or registry!
If in the config you have key's with the same name, the when broadcasting multisig cannot find the localname for the key
For example, if you have in the config
[[keys]]
name = "ceph-cosmos"
address = "cosmos1..."
localname = "cec-cosmos-multisig" # only needed for the broadcaster
[[keys]]
name = "ceph-cosmos"
address = "cre1.."
localname = "cec-crescent-multisig" # only needed for the broadcaster
then if you are brodcasting for multisig crescent ceph-cosmos
this will fail
Regen's validator account is a "Periodic Vesting Account" and it has a different structure.
The account number and sequence numbers can't be automatically obtained unless we somehow properly unmarhsal this structu type.
Ex.:
'@type': /cosmos.vesting.v1beta1.PeriodicVestingAccount
base_vesting_account:
base_account:
account_number: "239"
address: regen1kl83t6gm2y5lgg5c5h3sz87tt5fg3cmyrddngu
pub_key:
'@type': /cosmos.crypto.multisig.LegacyAminoPubKey
public_keys:
- '@type': /cosmos.crypto.secp256k1.PubKey
key: AltpFc2WnTmTj4QwDnLpVs4+6cDfknH7GepsIl79w4wM
- '@type': /cosmos.crypto.secp256k1.PubKey
key: AqE8JBBgeww4FqDat+AVP3jjZCUg4HjArGZ3tp2wqFb/
- '@type': /cosmos.crypto.secp256k1.PubKey
key: AwyaGHlmGJAdPHK0ddAKuSFs4jMhf5eymE2Fz/d414wC
- '@type': /cosmos.crypto.secp256k1.PubKey
key: AwfYH+rUsh32daqXcF0AJlEeBU/gdwQsy9qdxdCB0sc9
threshold: 2
sequence: "31"
...
2022/05/03 14:23:54 account number in query response is not an integer
If there are multiple transactions in a particular [chain]/[keyname] it's hard to see the content of a particular transaction. A nice option would be to have an index parameter (-i or --index)
that would show only the transaction content on that index.
Michael was trying to broadcast a test message from a 3-of-5 multisig address. The command should obviously fail, because he didn't sign it and it was just a test. But the error message was misleading:
Error: Insufficient signatures for broadcast. Requires 2, got 0
Michael's correct response:
This one actually requires three…
❯ multisig list juno ceph-main
juno/ceph-main/0/gs.json
juno/ceph-main/0/signdata.json
juno/ceph-main/0/unsigned.json
multisig tx authz grant juno ceph-main juno1rq9rdx739n0fss49lrca566hha02352mah34rk vote 365 -f
❯ multisig list juno ceph-main
juno/ceph-main/0/gs.json
juno/ceph-main/0/signdata.json
juno/ceph-main/0/unsigned.json
Expected: gs.json
is deleted.
This is ultimately an issue for the SDK but maybe there's something we can do in the meantime in multisig: cosmos/cosmos-sdk#12328
I think this still requires a --tx
but I guess it should be changed to --file
. Or it should be a required argument
Originally posted by @ebuchman in #5 (comment)
$ multisig list --all
Error: accepts 2 arg(s), received 0
Usage:
multisig list <chain name> <key name> [flags]
Flags:
-a, --all list files for all chains and keys
-h, --help help for list
2022/05/04 14:06:14 accepts 2 arg(s), received 0
This should list everything in the bucket but now fails
Broadcasting an impacthub
chain transaction and getting an error
Error: couldn't find code in tx response
Sample
/home/mircea/go/bin/ixod tx broadcast signed.json --node http://35.182.58.243:26600
{"height":"16481","txhash":"07DC51A357FC169F87A23E4F7D07DBC5D35F421F3B7DAA6F13EB3F45C301506F","codespace":"","code":0,"data":"0A200A1E2F636F736D6F732E617574687A2E763162657461312E4D73674772616E74","raw_log":"[{\"events\":[{\"type\":\"cosmos.authz.v1beta1.EventGrant\",\"attributes\":[{\"key\":\"grantee\",\"value\":\"\\\"ixo1f4nskxfw8ufhwnajh7xwt0wmdtxm02vwenfr7p\\\"\"},{\"key\":\"granter\",\"value\":\"\\\"ixo1x20lytyf6zkcrv5edpkfkn8sz578qg5s2g53ty\\\"\"},{\"key\":\"msg_type_url\",\"value\":\"\\\"/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission\\\"\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmos.authz.v1beta1.MsgGrant\"}]}]}]","logs":[{"msg_index":0,"log":"","events":[{"type":"cosmos.authz.v1beta1.EventGrant","attributes":[{"key":"grantee","value":"\"ixo1f4nskxfw8ufhwnajh7xwt0wmdtxm02vwenfr7p\""},{"key":"granter","value":"\"ixo1x20lytyf6zkcrv5edpkfkn8sz578qg5s2g53ty\""},{"key":"msg_type_url","value":"\"/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission\""}]},{"type":"message","attributes":[{"key":"action","value":"/cosmos.authz.v1beta1.MsgGrant"}]}]}],"info":"","gas_wanted":"300000","gas_used":"83781","tx":null,"timestamp":"","events":[{"type":"coin_spent","attributes":[{"key":"c3BlbmRlcg==","value":"aXhvMXgyMGx5dHlmNnprY3J2NWVkcGtma244c3o1NzhxZzVzMmc1M3R5","index":true},{"key":"YW1vdW50","value":"NTAwMHVpeG8=","index":true}]},{"type":"coin_received","attributes":[{"key":"cmVjZWl2ZXI=","value":"aXhvMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsMHZhajB3","index":true},{"key":"YW1vdW50","value":"NTAwMHVpeG8=","index":true}]},{"type":"transfer","attributes":[{"key":"cmVjaXBpZW50","value":"aXhvMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsMHZhajB3","index":true},{"key":"c2VuZGVy","value":"aXhvMXgyMGx5dHlmNnprY3J2NWVkcGtma244c3o1NzhxZzVzMmc1M3R5","index":true},{"key":"YW1vdW50","value":"NTAwMHVpeG8=","index":true}]},{"type":"message","attributes":[{"key":"c2VuZGVy","value":"aXhvMXgyMGx5dHlmNnprY3J2NWVkcGtma244c3o1NzhxZzVzMmc1M3R5","index":true}]},{"type":"tx","attributes":[{"key":"ZmVl","value":"NTAwMHVpeG8=","index":true},{"key":"ZmVlX3BheWVy","value":"aXhvMXgyMGx5dHlmNnprY3J2NWVkcGtma244c3o1NzhxZzVzMmc1M3R5","index":true}]},{"type":"tx","attributes":[{"key":"YWNjX3NlcQ==","value":"aXhvMXgyMGx5dHlmNnprY3J2NWVkcGtma244c3o1NzhxZzVzMmc1M3R5LzEz","index":true}]},{"type":"tx","attributes":[{"key":"c2lnbmF0dXJl","value":"cUdHQ09SQkVzZlROYVpnTkFiUE9Hcm1pYWg3YnlaN2laVGZVRWlkWXNIb3BpT3FKbGFrVnE4eUI3T0p1UkdIWXRLTlgyWGpoZDhwMzdrWlZrMzZLc2c9PQ==","index":true}]},{"type":"tx","attributes":[{"key":"c2lnbmF0dXJl","value":"Vll3L1Q5Z052SW5HUkNpbWxhTkgyZk0zV0cvZFFiYTdseE9McHVNSWxOSTdSYmxLNjQ5bldLTTRSVDcvTHZST1JCWUtqazN3MFRMdkJqVjVtS28zYUE9PQ==","index":true}]},{"type":"tx","attributes":[{"key":"c2lnbmF0dXJl","value":"Q2tDb1lZSTVFRVN4OU0xcG1BMEJzODRhdWFKcUh0dkpudUpsTjlRU0oxaXdlaW1JNm9tVnFSV3J6SUhzNG01RVlkaTBvMWZaZU9GM3luZnVSbFdUZm9xeUNrQlZqRDlQMkEyOGljWkVLS2FWbzBmWjh6ZFliOTFCdHJ1WEU0dW00d2lVMGp0RnVVcnJqMmRZb3poRlB2OHU5RTVFRmdxT1RmRFJNdThHTlhtWXFqZG8=","index":true}]},{"type":"message","attributes":[{"key":"YWN0aW9u","value":"L2Nvc21vcy5hdXRoei52MWJldGExLk1zZ0dyYW50","index":true}]},{"type":"cosmos.authz.v1beta1.EventGrant","attributes":[{"key":"Z3JhbnRlZQ==","value":"Iml4bzFmNG5za3hmdzh1Zmh3bmFqaDd4d3Qwd21kdHhtMDJ2d2VuZnI3cCI=","index":true},{"key":"Z3JhbnRlcg==","value":"Iml4bzF4MjBseXR5ZjZ6a2NydjVlZHBrZmtuOHN6NTc4cWc1czJnNTN0eSI=","index":true},{"key":"bXNnX3R5cGVfdXJs","value":"Ii9jb3Ntb3MuZGlzdHJpYnV0aW9uLnYxYmV0YTEuTXNnV2l0aGRyYXdWYWxpZGF0b3JDb21taXNzaW9uIg==","index":true}]}]}
Error: couldn't find code in tx response
Usage:
multisig broadcast <chain name> <key name> [flags]
Flags:
-h, --help help for broadcast
-i, --index int index of the tx to broadcast
-n, --node string node address to broadcast too. flag overrides config
Global Flags:
-c, --config string custom config path
2022/12/09 15:15:47 couldn't find code in tx response
Add a new command to claim commission multisig claim-commission
to claim commissions from a validator account
Currently there is no way to specify the fee amount when creating a transaction (e.g. multisig tx authz grant
), so depending on the chain, because the fee is hard-coded at 10000
, you might get an error when broadcasting the transaction "raw_log":"insufficient fees
)
Add a --fees
flag to the transaction commands so if a user specifies --fees 50000utoken
then the transaction fee will be:
"fee":{"amount":[{"denom":"utoken","amount":"50000"}]
defaultFee
and defaultGas
option to the configInstead of having the default fee hard-coded at 10000
and the default gas at 300000
, add an option to retrieve these defaults from the config.toml
file
Currently there is no way to remove / delete all transactions in a particular path all at once. If you use the delete
command you have to specify the index if there are more than 1 transaction in a particular path.
In order to allow users to remove all the transactions in a path add the flag --all
to the delete
command and remove all the transactions at once.
It would be good to also have a confirmation message asking the user for confirmation on executing this command since it removes several transactions at once.
Creating a multisig tx on Stride returns an error that it cannot parse the /stride.vesting.StridePeriodicVestingAccount
account type.
added a grant transaction
list works
raw cat says folder empty
multisig raw cat cosmos ceph-cosmos
When trying to sign a tx, if the user uses the wrong keys name (e.g the multisig key name), the tool might show an error that is not very intuitive to describe this mistake.
Error: cannot sign with offline keys
If possible, find a way to provide a more user friendly error to the user saying the wrong key might have been specified.
All commands, including raw cat has the <chain> <key>
input parameters, so the user gets used to using that.
raw delete
on the other hand has <path>
instead because of its advanced functionality of being able to delete a single file.
Scenario:
Michael tested multisig
by adding two transactions to AWS. Then he wanted to delete them. raw delete
made it confusing to delete all files one-by-one when he knew exactly which chain,key and possibly -i
index he wanted to delete.
Possible solution:
new, regular delete <chain> <key> [-i index]
command.
One of the common multisig commands is the [binary] tx bank send
. Implement a new command for multisig:
multisig tx send
Executing the command:
axelard tx broadcast signed.json
Fails with error:
Error: couldn't find code in tx response
Currently if a folder is empty e.g. cosmos/ceph-cosmos
if you issue a command multisig delete cosmos ceph-cosmos
the command doesn't delete the folder, in order to remove it you need to execute two raw delete
commands:
multisig raw delete cosmos/ceph-cosmos/
multisig raw delete cosmos/
It would be nice if the delete command would get rig of the folder (sometimes the folder created was with an invalid chain-id or key name).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.