diff --git a/Makefile b/Makefile index 1e66da94b..8a58bf3ee 100644 --- a/Makefile +++ b/Makefile @@ -86,3 +86,7 @@ run_with_some_data: run_with_all_data: ./scripts/clean_build.sh ./scripts/run_with_all_data.sh + +run_with_all_data_dev: + ./scripts/clean_build.sh + ./scripts/run_with_all_data_dev.sh diff --git a/client/tx/txRoutes.go b/client/tx/txRoutes.go index 1ee490fed..6ac1e1f00 100644 --- a/client/tx/txRoutes.go +++ b/client/tx/txRoutes.go @@ -4,14 +4,17 @@ import ( "encoding/base64" "encoding/hex" "github.com/cosmos/cosmos-sdk/client/context" + "github.com/cosmos/cosmos-sdk/client/flags" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/rest" "github.com/cosmos/cosmos-sdk/x/auth" "github.com/cosmos/cosmos-sdk/x/auth/client/utils" + "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/gorilla/mux" "github.com/ixofoundation/ixo-blockchain/x/did" "github.com/ixofoundation/ixo-blockchain/x/ixo" "github.com/ixofoundation/ixo-blockchain/x/project" + "github.com/spf13/viper" "io/ioutil" "net/http" "strings" @@ -80,7 +83,20 @@ func SignDataRequest(cliCtx context.CLIContext) http.HandlerFunc { signerAddress := did.VerifyKeyToAddr(req.PubKey) cliCtx = cliCtx.WithFromAddress(signerAddress) - txBldr, err := utils.PrepareTxBuilder(auth.NewTxBuilderFromCLI(cliCtx.Input), cliCtx) + // Create tx builder with: + // - TxEncoder set to GetTxEncoder(...) + // - Acc no. and sequence set to 0 (set by PrepareTxBuilder) + // - Gas and gas adjustment set to 0 (set by ApproximateFeeForTx) + // - Simulate set to false + // - Chain ID obtained using viper.GetString(...) + // - Memo set to empty string (custom memo not supported) + // - Fees and gas prices set to nil (set by ApproximateFeeForTx) + chainId := viper.GetString(flags.FlagChainID) + txBldr := types.NewTxBuilder( + utils.GetTxEncoder(cliCtx.Codec), + 0, 0, 0, 0, false, chainId, "", nil, nil) + + txBldr, err = utils.PrepareTxBuilder(txBldr, cliCtx) if err != nil { rest.WriteErrorResponse(w, http.StatusInternalServerError, err.Error()) return diff --git a/scripts/run_with_all_data_and_genesis_file.sh b/scripts/run_with_all_data_and_genesis_file.sh new file mode 100755 index 000000000..8e36c080a --- /dev/null +++ b/scripts/run_with_all_data_and_genesis_file.sh @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + +PASSWORD="12345678" + +ixod init local --chain-id pandora-1 + +echo "Backing up existing genesis file..." +cp "$HOME"/.ixod/config/genesis.json "$HOME"/.ixod/config/genesis.json.backup + +echo "Copying new genesis file to $HOME/.ixod/config/genesis.json..." +cp genesis.json "$HOME"/.ixod/config/genesis.json + +yes $PASSWORD | ixocli keys delete miguel --force +yes $PASSWORD | ixocli keys delete francesco --force +yes $PASSWORD | ixocli keys delete shaun --force +yes $PASSWORD | ixocli keys delete fee --force +yes $PASSWORD | ixocli keys delete fee2 --force +yes $PASSWORD | ixocli keys delete fee3 --force +yes $PASSWORD | ixocli keys delete fee4 --force +yes $PASSWORD | ixocli keys delete fee5 --force + +yes $PASSWORD | ixocli keys add miguel +yes $PASSWORD | ixocli keys add francesco +yes $PASSWORD | ixocli keys add shaun +yes $PASSWORD | ixocli keys add fee +yes $PASSWORD | ixocli keys add fee2 +yes $PASSWORD | ixocli keys add fee3 +yes $PASSWORD | ixocli keys add fee4 +yes $PASSWORD | ixocli keys add fee5 + +# Note: important to add 'miguel' as a genesis-account since this is the chain's validator +yes $PASSWORD | ixod add-genesis-account "$(ixocli keys show miguel -a)" 100000000000uixo,100000000000res,100000000000rez +yes $PASSWORD | ixod add-genesis-account "$(ixocli keys show francesco -a)" 100000000000uixo,100000000000res,100000000000rez +yes $PASSWORD | ixod add-genesis-account "$(ixocli keys show shaun -a)" 100000000000uixo,100000000000res,100000000000rez + +# Add pubkey-based genesis accounts +MIGUEL_ADDR="ixo107pmtx9wyndup8f9lgj6d7dnfq5kuf3sapg0vx" # address from did:ixo:4XJLBfGtWSGKSz4BeRxdun's pubkey +FRANCESCO_ADDR="ixo1cpa6w2wnqyxpxm4rryfjwjnx75kn4xt372dp3y" # address from did:ixo:UKzkhVSHc3qEFva5EY2XHt's pubkey +SHAUN_ADDR="ixo1d5u5ta7np7vefxa7ttpuy5aurg7q5regm0t2un" # address from did:ixo:U4tSpzzv91HHqWW1YmFkHJ's pubkey +yes $PASSWORD | ixod add-genesis-account "$MIGUEL_ADDR" 100000000000uixo,1000000res,1000000rez +yes $PASSWORD | ixod add-genesis-account "$FRANCESCO_ADDR" 100000000000uixo,1000000res,1000000rez +yes $PASSWORD | ixod add-genesis-account "$SHAUN_ADDR" 100000000000uixo,1000000res,1000000rez + +# Add genesis oracles +MIGUEL_DID="did:ixo:4XJLBfGtWSGKSz4BeRxdun" +FRANCESCO_DID="did:ixo:UKzkhVSHc3qEFva5EY2XHt" +SHAUN_DID="did:ixo:U4tSpzzv91HHqWW1YmFkHJ" +yes $PASSWORD | ixod add-genesis-oracle "$MIGUEL_DID" "uixo:mint" +yes $PASSWORD | ixod add-genesis-oracle "$FRANCESCO_DID" "uixo:mint/burn/transfer,uxgbp:mint/burn/transfer" +yes $PASSWORD | ixod add-genesis-oracle "$SHAUN_DID" "res:transfer,rez:transfer" + +# Add ixo did +IXO_DID="did:ixo:U4tSpzzv91HHqWW1YmFkHJ" +FROM="\"ixo_did\": \"\"" +TO="\"ixo_did\": \"$IXO_DID\"" +sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/genesis.json + +# Set staking token (both bond_denom and mint_denom) +STAKING_TOKEN="uixo" +FROM="\"bond_denom\": \"stake\"" +TO="\"bond_denom\": \"$STAKING_TOKEN\"" +sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/genesis.json +FROM="\"mint_denom\": \"stake\"" +TO="\"mint_denom\": \"$STAKING_TOKEN\"" +sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/genesis.json + +# Set fee token (both for gov min deposit and crisis constant fee) +FEE_TOKEN="uixo" +FROM="\"stake\"" +TO="\"$FEE_TOKEN\"" +sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/genesis.json + +# Set min-gas-prices (using fee token) +FROM="minimum-gas-prices = \"\"" +TO="minimum-gas-prices = \"0.025$FEE_TOKEN\"" +sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/app.toml + +ixocli config chain-id pandora-1 +ixocli config output json +ixocli config indent true +ixocli config trust-node true + +yes $PASSWORD | ixod gentx --name miguel --amount 1000000uixo + +ixod collect-gentxs +ixod validate-genesis + +# Uncomment the below to broadcast node RPC endpoint +#FROM="laddr = \"tcp:\/\/127.0.0.1:26657\"" +#TO="laddr = \"tcp:\/\/0.0.0.0:26657\"" +#sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/config.toml + +# Uncomment the below to broadcast REST endpoint +# Do not forget to comment the bottom lines !! +#ixod start --pruning "syncable" & +#ixocli rest-server --chain-id pandora-1 --laddr="tcp://0.0.0.0:1317" --trust-node && fg + +ixod start --pruning "syncable" & +ixocli rest-server --chain-id pandora-1 --trust-node && fg diff --git a/scripts/run_with_all_data_dev.sh b/scripts/run_with_all_data_dev.sh new file mode 100755 index 000000000..92eaf96cf --- /dev/null +++ b/scripts/run_with_all_data_dev.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash + +PASSWORD="12345678" + +ixod init local --chain-id pandora-1 + +yes $PASSWORD | ixocli keys delete miguel --force +yes $PASSWORD | ixocli keys delete francesco --force +yes $PASSWORD | ixocli keys delete shaun --force +yes $PASSWORD | ixocli keys delete fee --force +yes $PASSWORD | ixocli keys delete fee2 --force +yes $PASSWORD | ixocli keys delete fee3 --force +yes $PASSWORD | ixocli keys delete fee4 --force +yes $PASSWORD | ixocli keys delete fee5 --force + +yes $PASSWORD | ixocli keys add miguel +yes $PASSWORD | ixocli keys add francesco +yes $PASSWORD | ixocli keys add shaun +yes $PASSWORD | ixocli keys add fee +yes $PASSWORD | ixocli keys add fee2 +yes $PASSWORD | ixocli keys add fee3 +yes $PASSWORD | ixocli keys add fee4 +yes $PASSWORD | ixocli keys add fee5 + +# Note: important to add 'miguel' as a genesis-account since this is the chain's validator +yes $PASSWORD | ixod add-genesis-account "$(ixocli keys show miguel -a)" 100000000000uixo,1000000res,1000000rez +yes $PASSWORD | ixod add-genesis-account "$(ixocli keys show francesco -a)" 100000000000uixo,1000000res,1000000rez +yes $PASSWORD | ixod add-genesis-account "$(ixocli keys show shaun -a)" 100000000000uixo,1000000res,1000000rez + +# Add pubkey-based genesis accounts +MIGUEL_ADDR="ixo107pmtx9wyndup8f9lgj6d7dnfq5kuf3sapg0vx" # address from did:ixo:4XJLBfGtWSGKSz4BeRxdun's pubkey +FRANCESCO_ADDR="ixo1cpa6w2wnqyxpxm4rryfjwjnx75kn4xt372dp3y" # address from did:ixo:UKzkhVSHc3qEFva5EY2XHt's pubkey +SHAUN_ADDR="ixo1d5u5ta7np7vefxa7ttpuy5aurg7q5regm0t2un" # address from did:ixo:U4tSpzzv91HHqWW1YmFkHJ's pubkey +yes $PASSWORD | ixod add-genesis-account "$MIGUEL_ADDR" 100000000000uixo,1000000res,1000000rez +yes $PASSWORD | ixod add-genesis-account "$FRANCESCO_ADDR" 100000000000uixo,1000000res,1000000rez +yes $PASSWORD | ixod add-genesis-account "$SHAUN_ADDR" 100000000000uixo,1000000res,1000000rez + +# Add genesis oracles +MIGUEL_DID="did:ixo:4XJLBfGtWSGKSz4BeRxdun" +FRANCESCO_DID="did:ixo:UKzkhVSHc3qEFva5EY2XHt" +SHAUN_DID="did:ixo:U4tSpzzv91HHqWW1YmFkHJ" +yes $PASSWORD | ixod add-genesis-oracle "$MIGUEL_DID" "uixo:mint" +yes $PASSWORD | ixod add-genesis-oracle "$FRANCESCO_DID" "uixo:mint/burn/transfer,xusd:mint/burn/transfer" +yes $PASSWORD | ixod add-genesis-oracle "$SHAUN_DID" "res:transfer,rez:transfer" + +# Add ixo did +IXO_DID="did:ixo:U4tSpzzv91HHqWW1YmFkHJ" +FROM="\"ixo_did\": \"\"" +TO="\"ixo_did\": \"$IXO_DID\"" +sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/genesis.json + +# Set staking token (both bond_denom and mint_denom) +STAKING_TOKEN="uixo" +FROM="\"bond_denom\": \"stake\"" +TO="\"bond_denom\": \"$STAKING_TOKEN\"" +sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/genesis.json +FROM="\"mint_denom\": \"stake\"" +TO="\"mint_denom\": \"$STAKING_TOKEN\"" +sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/genesis.json + +# Set fee token (both for gov min deposit and crisis constant fee) +FEE_TOKEN="uixo" +FROM="\"stake\"" +TO="\"$FEE_TOKEN\"" +sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/genesis.json + +# Set min-gas-prices (using fee token) +FROM="minimum-gas-prices = \"\"" +TO="minimum-gas-prices = \"0.025$FEE_TOKEN\"" +sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/app.toml + +ixocli config chain-id pandora-1 +ixocli config output json +ixocli config indent true +ixocli config trust-node true + +yes $PASSWORD | ixod gentx --name miguel --amount 1000000uixo + +ixod collect-gentxs +ixod validate-genesis + +FROM="laddr = \"tcp:\/\/127.0.0.1:26657\"" +TO="laddr = \"tcp:\/\/0.0.0.0:26657\"" +sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/config.toml + +ixod start --pruning "everything" & +ixocli rest-server --chain-id pandora-1 --laddr="tcp://0.0.0.0:1317" --trust-node && fg diff --git a/scripts/run_with_genesis_file.sh b/scripts/run_with_genesis_file.sh new file mode 100644 index 000000000..58b64d25b --- /dev/null +++ b/scripts/run_with_genesis_file.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +echo "Backing up existing genesis file..." +cp "$HOME"/.ixod/config/genesis.json "$HOME"/.ixod/config/genesis.json.backup + +echo "Copying new genesis file to $HOME/.ixod/config/genesis.json..." +cp genesis.json "$HOME"/.ixod/config/genesis.json + +ixod unsafe-reset-all +ixod validate-genesis + +# Uncomment the below to broadcast node RPC endpoint +#FROM="laddr = \"tcp:\/\/127.0.0.1:26657\"" +#TO="laddr = \"tcp:\/\/0.0.0.0:26657\"" +#sed -i "s/$FROM/$TO/" "$HOME"/.ixod/config/config.toml + +ixod start --pruning "syncable" & +ixocli rest-server --chain-id pandora-1 --trust-node && fg diff --git a/x/project/handler.go b/x/project/handler.go index c7cc759a1..73af534e2 100644 --- a/x/project/handler.go +++ b/x/project/handler.go @@ -260,7 +260,23 @@ func handleMsgUpdateAgent(ctx sdk.Context, k Keeper, msg MsgUpdateAgent) (*sdk.R // TODO: implement agent update (or remove functionality) - return nil, nil + ctx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypeUpdateAgent, + sdk.NewAttribute(types.AttributeKeyTxHash, msg.TxHash), + sdk.NewAttribute(types.AttributeKeySenderDid, msg.SenderDid), + sdk.NewAttribute(types.AttributeKeyProjectDid, msg.ProjectDid), + sdk.NewAttribute(types.AttributeKeyAgentDid, msg.Data.Did), + sdk.NewAttribute(types.AttributeKeyAgentRole, msg.Data.Role), + sdk.NewAttribute(types.AttributeKeyUpdatedStatus, msg.Data.Status), + ), + sdk.NewEvent( + sdk.EventTypeMessage, + sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), + ), + }) + + return &sdk.Result{Events: ctx.EventManager().Events()}, nil } func handleMsgCreateClaim(ctx sdk.Context, k Keeper, msg MsgCreateClaim) (*sdk.Result, error) { diff --git a/x/project/internal/types/events.go b/x/project/internal/types/events.go index 1aade8393..d44392046 100644 --- a/x/project/internal/types/events.go +++ b/x/project/internal/types/events.go @@ -4,6 +4,7 @@ const ( EventTypeCreateProject = "create_project" EventTypeUpdateProjectStatus = "update_project_status" EventTypeCreateAgent = "create_agent" + EventTypeUpdateAgent = "update_agent" EventTypeCreateClaim = "create_claim" EventTypeCreateEvaluation = "create_evaluation" EventTypeWithdrawFunds = "withdraw_funds"