From da02dc7eb7dadb3efabe7c50088142cf7260e8cc Mon Sep 17 00:00:00 2001 From: MiniFrenchBread <103425574+MiniFrenchBread@users.noreply.github.com> Date: Mon, 12 Aug 2024 18:39:13 +0800 Subject: [PATCH] feat: evm precompile query func --- precompiles/dasigners/dasigners.go | 4 ++++ precompiles/dasigners/query.go | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/precompiles/dasigners/dasigners.go b/precompiles/dasigners/dasigners.go index 53cef1f5..4e248753 100644 --- a/precompiles/dasigners/dasigners.go +++ b/precompiles/dasigners/dasigners.go @@ -18,6 +18,7 @@ const ( RequiredGasMax uint64 = 1000_000_000 + DASignersFunctionParams = "params" DASignersFunctionEpochNumber = "epochNumber" DASignersFunctionQuorumCount = "quorumCount" DASignersFunctionGetSigner = "getSigner" @@ -32,6 +33,7 @@ const ( ) var RequiredGasBasic = map[string]uint64{ + DASignersFunctionParams: 1000, DASignersFunctionEpochNumber: 1000, DASignersFunctionQuorumCount: 1000, DASignersFunctionGetSigner: 100000, @@ -117,6 +119,8 @@ func (d *DASignersPrecompile) Run(evm *vm.EVM, contract *vm.Contract, readonly b var bz []byte switch method.Name { // queries + case DASignersFunctionParams: + bz, err = d.Params(ctx, evm, method, args) case DASignersFunctionEpochNumber: bz, err = d.EpochNumber(ctx, evm, method, args) case DASignersFunctionQuorumCount: diff --git a/precompiles/dasigners/query.go b/precompiles/dasigners/query.go index 8d21e4b9..6f518761 100644 --- a/precompiles/dasigners/query.go +++ b/precompiles/dasigners/query.go @@ -11,6 +11,17 @@ import ( "github.com/ethereum/go-ethereum/core/vm" ) +func (d *DASignersPrecompile) Params(ctx sdk.Context, _ *vm.EVM, method *abi.Method, _ []interface{}) ([]byte, error) { + params := d.dasignersKeeper.GetParams(ctx) + return method.Outputs.Pack(IDASignersParams{ + TokensPerVote: big.NewInt(int64(params.TokensPerVote)), + MaxVotesPerSigner: big.NewInt(int64(params.MaxVotesPerSigner)), + MaxQuorums: big.NewInt(int64(params.MaxQuorums)), + EpochBlocks: big.NewInt(int64(params.EpochBlocks)), + EncodedSlices: big.NewInt(int64(params.EncodedSlices)), + }) +} + func (d *DASignersPrecompile) EpochNumber(ctx sdk.Context, _ *vm.EVM, method *abi.Method, _ []interface{}) ([]byte, error) { epochNumber, err := d.dasignersKeeper.GetEpochNumber(ctx) if err != nil {