Wire up proposal handlers
This commit is contained in:
@@ -17,6 +17,7 @@ type decoratedKeeper interface {
|
||||
pinCode(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)
|
||||
Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte) ([]byte, 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)
|
||||
}
|
||||
|
||||
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 {
|
||||
return p.nested.setContractAdmin(ctx, contractAddress, caller, newAdmin, p.authZPolicy)
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@ package keeper
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
|
||||
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 {
|
||||
return fmt.Errorf("Not implemented")
|
||||
//if err := p.ValidateBasic(); err != nil {
|
||||
// return err
|
||||
//}
|
||||
//
|
||||
//contractAddr, err := sdk.AccAddressFromBech32(p.Contract)
|
||||
//if err != nil {
|
||||
// return sdkerrors.Wrap(err, "contract")
|
||||
//}
|
||||
//runAsAddr, err := sdk.AccAddressFromBech32(p.RunAs)
|
||||
//if err != nil {
|
||||
// return sdkerrors.Wrap(err, "run as address")
|
||||
//}
|
||||
//data, err := k.Migrate(ctx, contractAddr, runAsAddr, p.CodeID, p.Msg)
|
||||
//if err != nil {
|
||||
// return err
|
||||
//}
|
||||
//
|
||||
//ctx.EventManager().EmitEvent(sdk.NewEvent(
|
||||
// types.EventTypeGovContractResult,
|
||||
// sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)),
|
||||
//))
|
||||
//return nil
|
||||
if err := p.ValidateBasic(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
contractAddr, err := sdk.AccAddressFromBech32(p.Contract)
|
||||
if err != nil {
|
||||
return sdkerrors.Wrap(err, "contract")
|
||||
}
|
||||
data, err := k.Sudo(ctx, contractAddr, p.Msg)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
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 {
|
||||
return fmt.Errorf("Not implemented")
|
||||
//if err := p.ValidateBasic(); err != nil {
|
||||
// return err
|
||||
//}
|
||||
//
|
||||
//contractAddr, err := sdk.AccAddressFromBech32(p.Contract)
|
||||
//if err != nil {
|
||||
// return sdkerrors.Wrap(err, "contract")
|
||||
//}
|
||||
//runAsAddr, err := sdk.AccAddressFromBech32(p.RunAs)
|
||||
//if err != nil {
|
||||
// return sdkerrors.Wrap(err, "run as address")
|
||||
//}
|
||||
//data, err := k.Migrate(ctx, contractAddr, runAsAddr, p.CodeID, p.Msg)
|
||||
//if err != nil {
|
||||
// return err
|
||||
//}
|
||||
//
|
||||
//ctx.EventManager().EmitEvent(sdk.NewEvent(
|
||||
// types.EventTypeGovContractResult,
|
||||
// sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)),
|
||||
//))
|
||||
//return nil
|
||||
if err := p.ValidateBasic(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
contractAddr, err := sdk.AccAddressFromBech32(p.Contract)
|
||||
if err != nil {
|
||||
return sdkerrors.Wrap(err, "contract")
|
||||
}
|
||||
runAsAddr, err := sdk.AccAddressFromBech32(p.RunAs)
|
||||
if err != nil {
|
||||
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.Execute(ctx, contractAddr, runAsAddr, p.Msg, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ctx.EventManager().EmitEvent(sdk.NewEvent(
|
||||
types.EventTypeGovContractResult,
|
||||
sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)),
|
||||
))
|
||||
return nil
|
||||
}
|
||||
|
||||
func handleUpdateAdminProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.UpdateAdminProposal) error {
|
||||
|
||||
@@ -36,6 +36,9 @@ type ContractOpsKeeper interface {
|
||||
// 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)
|
||||
|
||||
// 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(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newAdmin sdk.AccAddress) error
|
||||
|
||||
|
||||
Reference in New Issue
Block a user