Wire up proposal handlers
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user