Wire up proposal handlers

This commit is contained in:
Ethan Frey
2022-01-21 14:37:53 +01:00
parent d227112cc3
commit 53a44eb4d7
3 changed files with 49 additions and 48 deletions

View File

@@ -17,6 +17,7 @@ type decoratedKeeper interface {
pinCode(ctx sdk.Context, codeID uint64) error pinCode(ctx sdk.Context, codeID uint64) error
unpinCode(ctx sdk.Context, codeID uint64) error unpinCode(ctx sdk.Context, codeID uint64) error
execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, msg []byte, coins sdk.Coins) ([]byte, error) execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, msg []byte, coins sdk.Coins) ([]byte, error)
Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte) ([]byte, error)
setContractInfoExtension(ctx sdk.Context, contract sdk.AccAddress, extra types.ContractInfoExtension) error setContractInfoExtension(ctx sdk.Context, contract sdk.AccAddress, extra types.ContractInfoExtension) error
} }
@@ -53,6 +54,10 @@ func (p PermissionedKeeper) Migrate(ctx sdk.Context, contractAddress sdk.AccAddr
return p.nested.migrate(ctx, contractAddress, caller, newCodeID, msg, p.authZPolicy) return p.nested.migrate(ctx, contractAddress, caller, newCodeID, msg, p.authZPolicy)
} }
func (p PermissionedKeeper) Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte) ([]byte, error) {
return p.nested.Sudo(ctx, contractAddress, msg)
}
func (p PermissionedKeeper) UpdateContractAdmin(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newAdmin sdk.AccAddress) error { func (p PermissionedKeeper) UpdateContractAdmin(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newAdmin sdk.AccAddress) error {
return p.nested.setContractAdmin(ctx, contractAddress, caller, newAdmin, p.authZPolicy) return p.nested.setContractAdmin(ctx, contractAddress, caller, newAdmin, p.authZPolicy)
} }

View File

@@ -2,8 +2,6 @@ package keeper
import ( import (
"encoding/hex" "encoding/hex"
"fmt"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
@@ -121,55 +119,50 @@ func handleMigrateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.M
} }
func handleSudoProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.SudoContractProposal) error { func handleSudoProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.SudoContractProposal) error {
return fmt.Errorf("Not implemented") if err := p.ValidateBasic(); err != nil {
//if err := p.ValidateBasic(); err != nil { return err
// return err }
//}
// contractAddr, err := sdk.AccAddressFromBech32(p.Contract)
//contractAddr, err := sdk.AccAddressFromBech32(p.Contract) if err != nil {
//if err != nil { return sdkerrors.Wrap(err, "contract")
// return sdkerrors.Wrap(err, "contract") }
//} data, err := k.Sudo(ctx, contractAddr, p.Msg)
//runAsAddr, err := sdk.AccAddressFromBech32(p.RunAs) if err != nil {
//if err != nil { return err
// return sdkerrors.Wrap(err, "run as address") }
//}
//data, err := k.Migrate(ctx, contractAddr, runAsAddr, p.CodeID, p.Msg) ctx.EventManager().EmitEvent(sdk.NewEvent(
//if err != nil { types.EventTypeGovContractResult,
// return err sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)),
//} ))
// return nil
//ctx.EventManager().EmitEvent(sdk.NewEvent(
// types.EventTypeGovContractResult,
// sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)),
//))
//return nil
} }
func handleExecuteProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.ExecuteContractProposal) error { func handleExecuteProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.ExecuteContractProposal) error {
return fmt.Errorf("Not implemented") if err := p.ValidateBasic(); err != nil {
//if err := p.ValidateBasic(); err != nil { return err
// return err }
//}
// contractAddr, err := sdk.AccAddressFromBech32(p.Contract)
//contractAddr, err := sdk.AccAddressFromBech32(p.Contract) if err != nil {
//if err != nil { return sdkerrors.Wrap(err, "contract")
// return sdkerrors.Wrap(err, "contract") }
//} runAsAddr, err := sdk.AccAddressFromBech32(p.RunAs)
//runAsAddr, err := sdk.AccAddressFromBech32(p.RunAs) if err != nil {
//if err != nil { return sdkerrors.Wrap(err, "run as address")
// return sdkerrors.Wrap(err, "run as address") }
//} // we currently don't support sending tokens as part of an execute proposal. should we? from which account?
//data, err := k.Migrate(ctx, contractAddr, runAsAddr, p.CodeID, p.Msg) data, err := k.Execute(ctx, contractAddr, runAsAddr, p.Msg, nil)
//if err != nil { if err != nil {
// return err return err
//} }
//
//ctx.EventManager().EmitEvent(sdk.NewEvent( ctx.EventManager().EmitEvent(sdk.NewEvent(
// types.EventTypeGovContractResult, types.EventTypeGovContractResult,
// sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)), sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)),
//)) ))
//return nil return nil
} }
func handleUpdateAdminProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.UpdateAdminProposal) error { func handleUpdateAdminProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.UpdateAdminProposal) error {

View File

@@ -36,6 +36,9 @@ type ContractOpsKeeper interface {
// Migrate allows to upgrade a contract to a new code with data migration. // Migrate allows to upgrade a contract to a new code with data migration.
Migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newCodeID uint64, msg []byte) ([]byte, error) Migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newCodeID uint64, msg []byte) ([]byte, error)
// Sudo allows to call privileged entry point of a contract.
Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte) ([]byte, error)
// UpdateContractAdmin sets the admin value on the ContractInfo. It must be a valid address (use ClearContractAdmin to remove it) // UpdateContractAdmin sets the admin value on the ContractInfo. It must be a valid address (use ClearContractAdmin to remove it)
UpdateContractAdmin(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newAdmin sdk.AccAddress) error UpdateContractAdmin(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newAdmin sdk.AccAddress) error