mirror of
https://github.com/planetmint/planetmint-go.git
synced 2025-03-30 15:08:28 +00:00
Enable sequence file locking in tests (#236)
* [lib] Add `FeeGranter` to tx factory * [lib] Align return value with test cases * [test] Return error on tx response * [test] Switch to sequence file locking via libRPC * [test] Reintegrate `TestPoPResult` Closes #234 Signed-off-by: Julian Strobl <jmastr@mailbox.org>
This commit is contained in:
parent
487dc3b93c
commit
036ce7cbc1
24
lib/tx.go
24
lib/tx.go
@ -61,6 +61,7 @@ func getTxFactoryWithAccountNumberAndSequence(clientCtx client.Context, accountN
|
||||
WithAccountNumber(accountNumber).
|
||||
WithAccountRetriever(clientCtx.AccountRetriever).
|
||||
WithChainID(clientCtx.ChainID).
|
||||
WithFeeGranter(clientCtx.FeeGranter).
|
||||
WithGas(200000).
|
||||
WithGasPrices("0.000005" + GetConfig().FeeDenom).
|
||||
WithKeybase(clientCtx.Keyring).
|
||||
@ -140,16 +141,16 @@ func BuildUnsignedTx(address sdk.AccAddress, msgs ...sdk.Msg) (txJSON string, er
|
||||
}
|
||||
|
||||
// BroadcastTx broadcasts a transaction via RPC.
|
||||
func BroadcastTx(address sdk.AccAddress, msgs ...sdk.Msg) (broadcastTxResponseJSON string, err error) {
|
||||
func BroadcastTx(address sdk.AccAddress, msgs ...sdk.Msg) (out *bytes.Buffer, err error) {
|
||||
clientCtx, txf, err := getClientContextAndTxFactory(address)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
broadcastTxResponseJSON, err = broadcastTx(clientCtx, txf, msgs...)
|
||||
out, err = broadcastTx(clientCtx, txf, msgs...)
|
||||
return
|
||||
}
|
||||
|
||||
func broadcastTx(clientCtx client.Context, txf tx.Factory, msgs ...sdk.Msg) (broadcastTxResponseJSON string, err error) {
|
||||
func broadcastTx(clientCtx client.Context, txf tx.Factory, msgs ...sdk.Msg) (out *bytes.Buffer, err error) {
|
||||
err = tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msgs...)
|
||||
if err != nil {
|
||||
return
|
||||
@ -166,17 +167,10 @@ func broadcastTx(clientCtx client.Context, txf tx.Factory, msgs ...sdk.Msg) (bro
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
code, ok := result["code"].(float64)
|
||||
if !ok {
|
||||
err = ErrTypeAssertionFailed
|
||||
return
|
||||
}
|
||||
if code != 0 {
|
||||
err = errors.New(output.String())
|
||||
return
|
||||
}
|
||||
|
||||
broadcastTxResponseJSON = output.String()
|
||||
// Make a copy because we `defer output.Reset()`
|
||||
out = &bytes.Buffer{}
|
||||
*out = *output
|
||||
return
|
||||
}
|
||||
func getSequenceFromFile(seqFile *os.File, filename string) (sequence uint64, err error) {
|
||||
@ -216,7 +210,7 @@ func getSequenceFromChain(clientCtx client.Context) (sequence uint64, err error)
|
||||
}
|
||||
|
||||
// BroadcastTxWithFileLock broadcasts a transaction via gRPC and synchronises requests via a file lock.
|
||||
func BroadcastTxWithFileLock(address sdk.AccAddress, msgs ...sdk.Msg) (broadcastTxResponseJSON string, err error) {
|
||||
func BroadcastTxWithFileLock(address sdk.AccAddress, msgs ...sdk.Msg) (out *bytes.Buffer, err error) {
|
||||
// open and lock file, if it exists
|
||||
usr, err := user.Current()
|
||||
if err != nil {
|
||||
@ -272,7 +266,7 @@ func BroadcastTxWithFileLock(address sdk.AccAddress, msgs ...sdk.Msg) (broadcast
|
||||
|
||||
// Set new sequence number
|
||||
txf = txf.WithSequence(sequence)
|
||||
broadcastTxResponseJSON, err = broadcastTx(clientCtx, txf, msgs...)
|
||||
out, err = broadcastTx(clientCtx, txf, msgs...)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -1,20 +1,18 @@
|
||||
package asset
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/planetmint/planetmint-go/config"
|
||||
"github.com/planetmint/planetmint-go/lib"
|
||||
"github.com/planetmint/planetmint-go/testutil/network"
|
||||
"github.com/planetmint/planetmint-go/testutil/sample"
|
||||
|
||||
clitestutil "github.com/planetmint/planetmint-go/testutil/cli"
|
||||
assetcli "github.com/planetmint/planetmint-go/x/asset/client/cli"
|
||||
machinecli "github.com/planetmint/planetmint-go/x/machine/client/cli"
|
||||
machinetypes "github.com/planetmint/planetmint-go/x/machine/types"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/hd"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/keyring"
|
||||
bank "github.com/cosmos/cosmos-sdk/x/bank/client/cli"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/suite"
|
||||
)
|
||||
@ -39,6 +37,9 @@ func NewE2ETestSuite(cfg network.Config) *E2ETestSuite {
|
||||
|
||||
// SetupSuite initializes asset E2ETestSuite
|
||||
func (s *E2ETestSuite) SetupSuite() {
|
||||
conf := config.GetConfig()
|
||||
conf.FeeDenom = "stake"
|
||||
|
||||
s.T().Log("setting up e2e test suite")
|
||||
|
||||
s.network = network.New(s.T())
|
||||
@ -51,15 +52,9 @@ func (s *E2ETestSuite) SetupSuite() {
|
||||
addr, _ := account.GetAddress()
|
||||
|
||||
// sending funds to machine to initialize account on chain
|
||||
args := []string{
|
||||
val.Moniker,
|
||||
addr.String(),
|
||||
sample.Amount,
|
||||
"--yes",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
}
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, bank.NewSendTxCmd(), args)
|
||||
coin := sdk.NewCoins(sdk.NewInt64Coin("stake", 1000))
|
||||
msg1 := banktypes.NewMsgSend(val.Address, addr, coin)
|
||||
out, err := lib.BroadcastTxWithFileLock(val.Address, msg1)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
@ -73,32 +68,26 @@ func (s *E2ETestSuite) SetupSuite() {
|
||||
prvKey, pubKey = sample.KeyPair()
|
||||
|
||||
ta := sample.TrustAnchor(pubKey)
|
||||
taJSON, err := json.Marshal(&ta)
|
||||
msg2 := machinetypes.NewMsgRegisterTrustAnchor(val.Address.String(), &ta)
|
||||
out, err = lib.BroadcastTxWithFileLock(val.Address, msg2)
|
||||
s.Require().NoError(err)
|
||||
args = []string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagChainID, s.network.Config.ChainID),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, addr.String()),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
string(taJSON),
|
||||
}
|
||||
_, err = clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdRegisterTrustAnchor(), args)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
_, err = clitestutil.GetRawLogFromTxOut(val, out)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
// name and address of private key with which to sign
|
||||
clientCtx := val.ClientCtx.
|
||||
WithFromAddress(addr).
|
||||
WithFromName(sample.Name)
|
||||
libConfig := lib.GetConfig()
|
||||
libConfig.SetClientCtx(clientCtx)
|
||||
|
||||
machine := sample.Machine(sample.Name, pubKey, prvKey, addr.String())
|
||||
machineJSON, err := json.Marshal(&machine)
|
||||
s.Require().NoError(err)
|
||||
|
||||
args = []string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, sample.Name),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
string(machineJSON),
|
||||
}
|
||||
|
||||
out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdAttestMachine(), args)
|
||||
msg3 := machinetypes.NewMsgAttestMachine(addr.String(), &machine)
|
||||
out, err = lib.BroadcastTxWithFileLock(addr, msg3)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
@ -120,29 +109,24 @@ func (s *E2ETestSuite) TestNotarizeAsset() {
|
||||
s.Require().NoError(err)
|
||||
|
||||
addr, _ := k.GetAddress()
|
||||
cid := sample.Asset()
|
||||
liquidAsset := machinetypes.LiquidAsset{}
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
msg *machinetypes.MsgNotarizeLiquidAsset
|
||||
rawLog string
|
||||
expectCheckTxErr bool
|
||||
}{
|
||||
{
|
||||
"valid notarization",
|
||||
[]string{
|
||||
cid,
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, addr.String()),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
},
|
||||
machinetypes.NewMsgNotarizeLiquidAsset(addr.String(), &liquidAsset),
|
||||
"[]",
|
||||
true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, assetcli.CmdNotarizeAsset(), tc.args)
|
||||
out, err := lib.BroadcastTxWithFileLock(addr, tc.msg)
|
||||
s.Require().NoError(err)
|
||||
|
||||
txResponse, err := clitestutil.GetTxResponseFromOut(out)
|
||||
|
@ -2,17 +2,18 @@ package dao
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"encoding/json"
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"cosmossdk.io/math"
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/hd"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/keyring"
|
||||
bank "github.com/cosmos/cosmos-sdk/x/bank/client/cli"
|
||||
"github.com/planetmint/planetmint-go/config"
|
||||
"github.com/planetmint/planetmint-go/lib"
|
||||
clitestutil "github.com/planetmint/planetmint-go/testutil/cli"
|
||||
"github.com/planetmint/planetmint-go/testutil/network"
|
||||
"github.com/planetmint/planetmint-go/testutil/sample"
|
||||
@ -115,24 +116,19 @@ func (s *E2ETestSuite) TearDownSuite() {
|
||||
}
|
||||
|
||||
func (s *E2ETestSuite) TestDistributeCollectedFees() {
|
||||
conf := config.GetConfig()
|
||||
val := s.network.Validators[0]
|
||||
|
||||
// sending funds to alice and pay some fees to be distributed
|
||||
args := []string{
|
||||
val.Moniker,
|
||||
aliceAddr.String(),
|
||||
"1000stake",
|
||||
"--yes",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, fmt.Sprintf("10%s", conf.FeeDenom)),
|
||||
}
|
||||
_, err := clitestutil.ExecTestCLICmd(val.ClientCtx, bank.NewSendTxCmd(), args)
|
||||
coin := sdk.NewCoins(sdk.NewInt64Coin("stake", 1000))
|
||||
msg := banktypes.NewMsgSend(val.Address, aliceAddr, coin)
|
||||
|
||||
_, err := lib.BroadcastTxWithFileLock(val.Address, msg)
|
||||
s.Require().NoError(err)
|
||||
|
||||
err = s.network.WaitForNextBlock()
|
||||
s.Require().NoError(err)
|
||||
|
||||
_, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.NewSendTxCmd(), args)
|
||||
_, err = lib.BroadcastTxWithFileLock(val.Address, msg)
|
||||
s.Require().NoError(err)
|
||||
|
||||
err = s.network.WaitForNextBlock()
|
||||
@ -141,40 +137,27 @@ func (s *E2ETestSuite) TestDistributeCollectedFees() {
|
||||
err = s.network.WaitForNextBlock()
|
||||
s.Require().NoError(err)
|
||||
|
||||
// assert that alice has 6 of 20 paid fee tokens based on 5000 stake of 15000 total stake
|
||||
// assert that alice has 0 of 20 paid fee tokens based on 5000 stake of 15000 total stake
|
||||
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
aliceAddr.String(),
|
||||
})
|
||||
assert.Contains(s.T(), out.String(), "node0token")
|
||||
assert.Contains(s.T(), out.String(), "6")
|
||||
assert.False(s.T(), strings.Contains(out.String(), "node0token"))
|
||||
s.Require().NoError(err)
|
||||
|
||||
// assert that bob has 13 of 20 paid fee tokens based on 10000 stake of 15000 total stake
|
||||
// assert that bob has 1 of 20 paid fee tokens based on 10000 stake of 15000 total stake
|
||||
out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
bobAddr.String(),
|
||||
})
|
||||
assert.Contains(s.T(), out.String(), "node0token")
|
||||
assert.Contains(s.T(), out.String(), "13")
|
||||
assert.Contains(s.T(), out.String(), "amount: \"1\"\n denom: node0token")
|
||||
s.Require().NoError(err)
|
||||
}
|
||||
|
||||
func (s *E2ETestSuite) TestMintToken() {
|
||||
conf := config.GetConfig()
|
||||
val := s.network.Validators[0]
|
||||
|
||||
mintRequest := sample.MintRequest(aliceAddr.String(), 1000, "hash")
|
||||
mrJSON, err := json.Marshal(&mintRequest)
|
||||
s.Require().NoError(err)
|
||||
|
||||
// send mint token request from mint address
|
||||
args := []string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Moniker),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, fmt.Sprintf("10%s", conf.FeeDenom)),
|
||||
"--yes",
|
||||
string(mrJSON),
|
||||
}
|
||||
|
||||
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, daocli.CmdMintToken(), args)
|
||||
msg1 := daotypes.NewMsgMintToken(val.Address.String(), &mintRequest)
|
||||
out, err := lib.BroadcastTxWithFileLock(val.Address, msg1)
|
||||
s.Require().NoError(err)
|
||||
|
||||
txResponse, err := clitestutil.GetTxResponseFromOut(out)
|
||||
@ -188,9 +171,14 @@ func (s *E2ETestSuite) TestMintToken() {
|
||||
assert.Contains(s.T(), rawLog, "planetmintgo.dao.MsgMintToken")
|
||||
|
||||
// assert that alice has actually received the minted tokens 10000 (initial supply) + 1000 (minted) = 11000 (total)
|
||||
out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
output, err := clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
aliceAddr.String(),
|
||||
})
|
||||
out, ok := output.(*bytes.Buffer)
|
||||
if !ok {
|
||||
err = lib.ErrTypeAssertionFailed
|
||||
s.Require().NoError(err)
|
||||
}
|
||||
assert.Contains(s.T(), out.String(), "plmnt")
|
||||
assert.Contains(s.T(), out.String(), "11000")
|
||||
s.Require().NoError(err)
|
||||
@ -203,26 +191,17 @@ func (s *E2ETestSuite) TestMintToken() {
|
||||
addr, _ := account.GetAddress()
|
||||
|
||||
// sending funds to account to initialize on chain
|
||||
args = []string{
|
||||
val.Moniker,
|
||||
addr.String(),
|
||||
sample.Amount,
|
||||
"--yes",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, fmt.Sprintf("10%s", conf.FeeDenom)),
|
||||
}
|
||||
_, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.NewSendTxCmd(), args)
|
||||
coin := sdk.NewCoins(sdk.NewInt64Coin("stake", 1000))
|
||||
msg2 := banktypes.NewMsgSend(val.Address, addr, coin)
|
||||
_, err = lib.BroadcastTxWithFileLock(val.Address, msg2)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
args = []string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, addr.String()),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, fmt.Sprintf("10%s", conf.FeeDenom)),
|
||||
"--yes",
|
||||
string(mrJSON),
|
||||
}
|
||||
msg1 = daotypes.NewMsgMintToken(addr.String(), &mintRequest)
|
||||
out, err = lib.BroadcastTxWithFileLock(addr, msg1)
|
||||
s.Require().NoError(err)
|
||||
|
||||
out, _ = clitestutil.ExecTestCLICmd(val.ClientCtx, daocli.CmdMintToken(), args)
|
||||
txResponse, err = clitestutil.GetTxResponseFromOut(out)
|
||||
s.Require().NoError(err)
|
||||
s.Require().Equal(int(2), int(txResponse.Code))
|
||||
@ -285,144 +264,107 @@ func (s *E2ETestSuite) TestReissuance() {
|
||||
s.Require().NoError(err)
|
||||
}
|
||||
|
||||
// disabled due to indeterministic behaviour.
|
||||
// TODO can be reintegrated asap clitestutil.ExecTestCLICmd(val.ClientCtx supports sequence locking
|
||||
// func (s *E2ETestSuite) TestPoPResult() {
|
||||
// conf := config.GetConfig()
|
||||
// conf.PopEpochs = 1
|
||||
// val := s.network.Validators[0]
|
||||
func (s *E2ETestSuite) TestPoPResult() {
|
||||
conf := config.GetConfig()
|
||||
conf.PopEpochs = 5
|
||||
val := s.network.Validators[0]
|
||||
|
||||
// // send PoP results
|
||||
// challenges := make([]daotypes.Challenge, 5)
|
||||
// for i := range challenges {
|
||||
// blockHeight := (i + 1) * config.GetConfig().PopEpochs
|
||||
// challenges[i].Height = int64(blockHeight)
|
||||
// challenges[i].Initiator = val.Address.String()
|
||||
// challenges[i].Challenger = aliceAddr.String()
|
||||
// challenges[i].Challengee = bobAddr.String()
|
||||
// challenges[i].Success = true
|
||||
// challenges[i].Finished = true
|
||||
// send PoP results
|
||||
challenges := make([]daotypes.Challenge, 5)
|
||||
for i := range challenges {
|
||||
blockHeight := (i + 1) * config.GetConfig().PopEpochs
|
||||
challenges[i].Height = int64(blockHeight)
|
||||
challenges[i].Initiator = val.Address.String()
|
||||
challenges[i].Challenger = aliceAddr.String()
|
||||
challenges[i].Challengee = bobAddr.String()
|
||||
challenges[i].Success = true
|
||||
challenges[i].Finished = true
|
||||
|
||||
// chJSON, err := json.Marshal(&challenges[i])
|
||||
// s.Require().NoError(err)
|
||||
msg := daotypes.NewMsgReportPopResult(val.Address.String(), &challenges[i])
|
||||
_, err := lib.BroadcastTxWithFileLock(val.Address, msg)
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
}
|
||||
|
||||
// args := []string{
|
||||
// fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Moniker),
|
||||
// fmt.Sprintf("--%s=%s", flags.FlagFees, fmt.Sprintf("10%s", conf.FeeDenom)),
|
||||
// "--yes",
|
||||
// string(chJSON),
|
||||
// }
|
||||
// check balance for stagedcrddl
|
||||
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetCmdQueryTotalSupply(), []string{
|
||||
fmt.Sprintf("--%s=%s", bank.FlagDenom, conf.StagedDenom),
|
||||
})
|
||||
s.Require().NoError(err)
|
||||
assert.Contains(s.T(), out.String(), conf.StagedDenom)
|
||||
assert.Contains(s.T(), out.String(), "39954337890") // Total supply 5 * 7990867578 = 39954337890
|
||||
|
||||
// _, err = clitestutil.ExecTestCLICmd(val.ClientCtx, daocli.CmdReportPopResult(), args)
|
||||
// s.Require().NoError(err)
|
||||
// s.Require().NoError(s.network.WaitForNextBlock())
|
||||
// }
|
||||
out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
aliceAddr.String(),
|
||||
fmt.Sprintf("--%s=%s", bank.FlagDenom, conf.StagedDenom),
|
||||
})
|
||||
s.Require().NoError(err)
|
||||
assert.Contains(s.T(), out.String(), conf.StagedDenom)
|
||||
assert.Contains(s.T(), out.String(), "9988584470") // 5 * 1997716894 = 9988584470
|
||||
|
||||
// // check balance for stagedcrddl
|
||||
// out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetCmdQueryTotalSupply(), []string{
|
||||
// fmt.Sprintf("--%s=%s", bank.FlagDenom, conf.StagedDenom),
|
||||
// })
|
||||
// s.Require().NoError(err)
|
||||
// assert.Contains(s.T(), out.String(), conf.StagedDenom)
|
||||
// assert.Contains(s.T(), out.String(), "39954337890") // Total supply 5 * 7990867578 = 39954337890
|
||||
out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
bobAddr.String(),
|
||||
fmt.Sprintf("--%s=%s", bank.FlagDenom, conf.StagedDenom),
|
||||
})
|
||||
s.Require().NoError(err)
|
||||
assert.Contains(s.T(), out.String(), conf.StagedDenom)
|
||||
assert.Contains(s.T(), out.String(), "29965753420") // 5 * 5993150684 = 29965753420
|
||||
|
||||
// out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
// aliceAddr.String(),
|
||||
// fmt.Sprintf("--%s=%s", bank.FlagDenom, conf.StagedDenom),
|
||||
// })
|
||||
// s.Require().NoError(err)
|
||||
// assert.Contains(s.T(), out.String(), conf.StagedDenom)
|
||||
// assert.Contains(s.T(), out.String(), "9988584470") // 5 * 1997716894 = 9988584470
|
||||
// send ReissuanceProposal
|
||||
msg1 := daotypes.NewMsgReissueRDDLProposal(val.Address.String(), aliceAddr.String(),
|
||||
"reissueasset 7add40beb27df701e02ee85089c5bc0021bc813823fedb5f1dcb5debda7f3da9 2996.07000000",
|
||||
challenges[4].Height, challenges[0].Height, challenges[2].Height)
|
||||
_, err = lib.BroadcastTxWithFileLock(val.Address, msg1)
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
// out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
// bobAddr.String(),
|
||||
// fmt.Sprintf("--%s=%s", bank.FlagDenom, conf.StagedDenom),
|
||||
// })
|
||||
// s.Require().NoError(err)
|
||||
// assert.Contains(s.T(), out.String(), conf.StagedDenom)
|
||||
// assert.Contains(s.T(), out.String(), "29965753420") // 5 * 5993150684 = 29965753420
|
||||
// send ReissuanceResult
|
||||
msg2 := daotypes.NewMsgReissueRDDLResult(val.Address.String(), aliceAddr.String(), "TxID", challenges[4].Height)
|
||||
_, err = lib.BroadcastTxWithFileLock(val.Address, msg2)
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
// // send ReissuanceProposal
|
||||
// _, err = clitestutil.ExecTestCLICmd(val.ClientCtx, daocli.CmdReissueRDDLProposal(), []string{
|
||||
// fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Moniker),
|
||||
// fmt.Sprintf("--%s=%s", flags.FlagFees, fmt.Sprintf("10%s", conf.FeeDenom)),
|
||||
// "--yes",
|
||||
// aliceAddr.String(),
|
||||
// "reissueasset 7add40beb27df701e02ee85089c5bc0021bc813823fedb5f1dcb5debda7f3da9 2996.07000000",
|
||||
// strconv.FormatInt(challenges[4].Height, 10),
|
||||
// strconv.FormatInt(challenges[0].Height, 10),
|
||||
// strconv.FormatInt(challenges[2].Height, 10),
|
||||
// })
|
||||
// s.Require().NoError(err)
|
||||
// s.Require().NoError(s.network.WaitForNextBlock())
|
||||
// send DistributionRequest
|
||||
distributionOrder := daotypes.DistributionOrder{
|
||||
Proposer: aliceAddr.String(),
|
||||
FirstPop: challenges[0].Height,
|
||||
LastPop: challenges[2].Height,
|
||||
DaoTxID: "DaoTxID",
|
||||
PopTxID: "PoPTxID",
|
||||
InvestorTxID: "InvestorTxID",
|
||||
}
|
||||
msg3 := daotypes.NewMsgDistributionRequest(val.Address.String(), &distributionOrder)
|
||||
_, err = lib.BroadcastTxWithFileLock(val.Address, msg3)
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
// // send ReissuanceResult
|
||||
// _, err = clitestutil.ExecTestCLICmd(val.ClientCtx, daocli.CmdReissueRDDLResult(), []string{
|
||||
// fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Moniker),
|
||||
// fmt.Sprintf("--%s=%s", flags.FlagFees, fmt.Sprintf("10%s", conf.FeeDenom)),
|
||||
// "--yes",
|
||||
// aliceAddr.String(),
|
||||
// "TxID",
|
||||
// strconv.FormatInt(challenges[4].Height, 10),
|
||||
// })
|
||||
// s.Require().NoError(err)
|
||||
// s.Require().NoError(s.network.WaitForNextBlock())
|
||||
// send DistributionResult
|
||||
msg4 := daotypes.NewMsgDistributionResult(val.Address.String(), challenges[2].Height, "DaoTxID", "InvestorTxID", "PoPTxID")
|
||||
_, err = lib.BroadcastTxWithFileLock(val.Address, msg4)
|
||||
s.Require().NoError(err)
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
// // send DistributionRequest
|
||||
// distributionOrder := daotypes.DistributionOrder{
|
||||
// Proposer: aliceAddr.String(),
|
||||
// FirstPop: challenges[0].Height,
|
||||
// LastPop: challenges[2].Height,
|
||||
// DaoTxID: "DaoTxID",
|
||||
// PopTxID: "PoPTxID",
|
||||
// InvestorTxID: "InvestorTxID",
|
||||
// }
|
||||
// doJSON, err := json.Marshal(&distributionOrder)
|
||||
// s.Require().NoError(err)
|
||||
// check balance for crddl
|
||||
out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetCmdQueryTotalSupply(), []string{
|
||||
fmt.Sprintf("--%s=%s", bank.FlagDenom, conf.ClaimDenom),
|
||||
})
|
||||
s.Require().NoError(err)
|
||||
assert.Contains(s.T(), out.String(), conf.ClaimDenom)
|
||||
assert.Contains(s.T(), out.String(), "0") // Total supply 3 * 5993150684 + 3 * 1997716894 = 23972602734
|
||||
|
||||
// _, err = clitestutil.ExecTestCLICmd(val.ClientCtx, daocli.CmdDistributionRequest(), []string{
|
||||
// fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Moniker),
|
||||
// fmt.Sprintf("--%s=%s", flags.FlagFees, fmt.Sprintf("10%s", conf.FeeDenom)),
|
||||
// "--yes",
|
||||
// string(doJSON),
|
||||
// })
|
||||
// s.Require().NoError(err)
|
||||
// s.Require().NoError(s.network.WaitForNextBlock())
|
||||
out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
aliceAddr.String(),
|
||||
fmt.Sprintf("--%s=%s", bank.FlagDenom, conf.ClaimDenom),
|
||||
})
|
||||
s.Require().NoError(err)
|
||||
assert.Contains(s.T(), out.String(), conf.ClaimDenom)
|
||||
assert.Contains(s.T(), out.String(), "0") // 3 * 1997716894 = 5993150682
|
||||
|
||||
// // send DistributionResult
|
||||
// _, err = clitestutil.ExecTestCLICmd(val.ClientCtx, daocli.CmdDistributionResult(), []string{
|
||||
// fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Moniker),
|
||||
// fmt.Sprintf("--%s=%s", flags.FlagFees, fmt.Sprintf("10%s", conf.FeeDenom)),
|
||||
// "--yes",
|
||||
// strconv.FormatInt(challenges[2].Height, 10),
|
||||
// "DaoTxID",
|
||||
// "InvestorTxID",
|
||||
// "PoPTxID",
|
||||
// })
|
||||
// s.Require().NoError(err)
|
||||
// s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
// // check balance for crddl
|
||||
// out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetCmdQueryTotalSupply(), []string{
|
||||
// fmt.Sprintf("--%s=%s", bank.FlagDenom, conf.ClaimDenom),
|
||||
// })
|
||||
// s.Require().NoError(err)
|
||||
// assert.Contains(s.T(), out.String(), conf.ClaimDenom)
|
||||
// assert.Contains(s.T(), out.String(), "0") // Total supply 3 * 5993150684 + 3 * 1997716894 = 23972602734
|
||||
|
||||
// out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
// aliceAddr.String(),
|
||||
// fmt.Sprintf("--%s=%s", bank.FlagDenom, conf.ClaimDenom),
|
||||
// })
|
||||
// s.Require().NoError(err)
|
||||
// assert.Contains(s.T(), out.String(), conf.ClaimDenom)
|
||||
// assert.Contains(s.T(), out.String(), "0") // 3 * 1997716894 = 5993150682
|
||||
|
||||
// out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
// bobAddr.String(),
|
||||
// fmt.Sprintf("--%s=%s", bank.FlagDenom, conf.ClaimDenom),
|
||||
// })
|
||||
// s.Require().NoError(err)
|
||||
// assert.Contains(s.T(), out.String(), conf.ClaimDenom)
|
||||
// assert.Contains(s.T(), out.String(), "0") // 3 * 5993150684 = 17979452052
|
||||
// }
|
||||
out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
bobAddr.String(),
|
||||
fmt.Sprintf("--%s=%s", bank.FlagDenom, conf.ClaimDenom),
|
||||
})
|
||||
s.Require().NoError(err)
|
||||
assert.Contains(s.T(), out.String(), conf.ClaimDenom)
|
||||
assert.Contains(s.T(), out.String(), "0") // 3 * 5993150684 = 17979452052
|
||||
}
|
||||
|
@ -1,19 +1,19 @@
|
||||
package machine
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/planetmint/planetmint-go/config"
|
||||
"github.com/planetmint/planetmint-go/lib"
|
||||
clitestutil "github.com/planetmint/planetmint-go/testutil/cli"
|
||||
"github.com/planetmint/planetmint-go/testutil/network"
|
||||
"github.com/planetmint/planetmint-go/testutil/sample"
|
||||
machinecli "github.com/planetmint/planetmint-go/x/machine/client/cli"
|
||||
machinetypes "github.com/planetmint/planetmint-go/x/machine/types"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/hd"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/keyring"
|
||||
bank "github.com/cosmos/cosmos-sdk/x/bank/client/cli"
|
||||
feegrant "github.com/cosmos/cosmos-sdk/x/feegrant/client/cli"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/feegrant"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/suite"
|
||||
)
|
||||
@ -33,6 +33,9 @@ func NewE2ETestSuite(cfg network.Config) *E2ETestSuite {
|
||||
|
||||
// SetupSuite initializes machine E2ETestSuite
|
||||
func (s *E2ETestSuite) SetupSuite() {
|
||||
conf := config.GetConfig()
|
||||
conf.FeeDenom = "stake"
|
||||
|
||||
s.T().Log("setting up e2e test suite")
|
||||
|
||||
s.network = network.New(s.T())
|
||||
@ -45,14 +48,9 @@ func (s *E2ETestSuite) SetupSuite() {
|
||||
addr, _ := account.GetAddress()
|
||||
|
||||
// sending funds to machine to initialize account on chain
|
||||
args := []string{
|
||||
val.Moniker,
|
||||
addr.String(),
|
||||
sample.Amount,
|
||||
"--yes",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
}
|
||||
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, bank.NewSendTxCmd(), args)
|
||||
coin := sdk.NewCoins(sdk.NewInt64Coin("stake", 1000))
|
||||
msg := banktypes.NewMsgSend(val.Address, addr, coin)
|
||||
out, err := lib.BroadcastTxWithFileLock(val.Address, msg)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
@ -75,16 +73,8 @@ func (s *E2ETestSuite) TestAttestMachine() {
|
||||
prvKey, pubKey := sample.KeyPair()
|
||||
|
||||
ta := sample.TrustAnchor(pubKey)
|
||||
taJSON, err := json.Marshal(&ta)
|
||||
s.Require().NoError(err)
|
||||
args := []string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagChainID, s.network.Config.ChainID),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, sample.Name),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
string(taJSON),
|
||||
}
|
||||
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdRegisterTrustAnchor(), args)
|
||||
msg1 := machinetypes.NewMsgRegisterTrustAnchor(val.Address.String(), &ta)
|
||||
out, err := lib.BroadcastTxWithFileLock(val.Address, msg1)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
@ -97,19 +87,16 @@ func (s *E2ETestSuite) TestAttestMachine() {
|
||||
s.Require().NoError(err)
|
||||
addr, _ := k.GetAddress()
|
||||
|
||||
// name and address of private key with which to sign
|
||||
clientCtx := val.ClientCtx.
|
||||
WithFromAddress(addr).
|
||||
WithFromName(sample.Name)
|
||||
libConfig := lib.GetConfig()
|
||||
libConfig.SetClientCtx(clientCtx)
|
||||
|
||||
machine := sample.Machine(sample.Name, pubKey, prvKey, addr.String())
|
||||
machineJSON, err := json.Marshal(&machine)
|
||||
s.Require().NoError(err)
|
||||
|
||||
args = []string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagChainID, s.network.Config.ChainID),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, sample.Name),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
string(machineJSON),
|
||||
}
|
||||
|
||||
out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdAttestMachine(), args)
|
||||
msg2 := machinetypes.NewMsgAttestMachine(addr.String(), &machine)
|
||||
out, err = lib.BroadcastTxWithFileLock(addr, msg2)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
@ -118,7 +105,7 @@ func (s *E2ETestSuite) TestAttestMachine() {
|
||||
|
||||
assert.Contains(s.T(), rawLog, "planetmintgo.machine.MsgAttestMachine")
|
||||
|
||||
args = []string{
|
||||
args := []string{
|
||||
pubKey,
|
||||
}
|
||||
|
||||
@ -137,36 +124,27 @@ func (s *E2ETestSuite) TestInvalidAttestMachine() {
|
||||
addr, _ := k.GetAddress()
|
||||
|
||||
machine := sample.Machine(sample.Name, pubKey, prvKey, addr.String())
|
||||
machineJSON, err := json.Marshal(&machine)
|
||||
s.Require().NoError(err)
|
||||
|
||||
args := []string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagChainID, s.network.Config.ChainID),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, sample.Name),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
string(machineJSON),
|
||||
}
|
||||
// name and address of private key with which to sign
|
||||
clientCtx := val.ClientCtx.
|
||||
WithFromAddress(addr).
|
||||
WithFromName(sample.Name)
|
||||
libConfig := lib.GetConfig()
|
||||
libConfig.SetClientCtx(clientCtx)
|
||||
|
||||
out, _ := clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdAttestMachine(), args)
|
||||
msg := machinetypes.NewMsgAttestMachine(addr.String(), &machine)
|
||||
out, _ := lib.BroadcastTxWithFileLock(addr, msg)
|
||||
txResponse, err := clitestutil.GetTxResponseFromOut(out)
|
||||
s.Require().NoError(err)
|
||||
s.Require().Equal(int(txResponse.Code), int(4))
|
||||
|
||||
unregisteredPubKey, unregisteredPrivKey := sample.KeyPair(2)
|
||||
machine = sample.Machine(sample.Name, unregisteredPubKey, unregisteredPrivKey, addr.String())
|
||||
machineJSON, err = json.Marshal(&machine)
|
||||
s.Require().NoError(err)
|
||||
|
||||
args = []string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagChainID, s.network.Config.ChainID),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, sample.Name),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
string(machineJSON),
|
||||
}
|
||||
|
||||
out, _ = clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdAttestMachine(), args)
|
||||
msg = machinetypes.NewMsgAttestMachine(addr.String(), &machine)
|
||||
out, _ = lib.BroadcastTxWithFileLock(addr, msg)
|
||||
txResponse, err = clitestutil.GetTxResponseFromOut(out)
|
||||
s.Require().NoError(err)
|
||||
s.Require().Equal(int(txResponse.Code), int(3))
|
||||
@ -186,56 +164,65 @@ func (s *E2ETestSuite) TestMachineAllowanceAttestation() {
|
||||
// register TA
|
||||
prvKey, pubKey := sample.KeyPair(3)
|
||||
|
||||
// name and address of private key with which to sign
|
||||
libConfig := lib.GetConfig()
|
||||
libConfig.SetClientCtx(val.ClientCtx)
|
||||
|
||||
ta := sample.TrustAnchor(pubKey)
|
||||
taJSON, err := json.Marshal(&ta)
|
||||
msg1 := machinetypes.NewMsgRegisterTrustAnchor(val.Address.String(), &ta)
|
||||
out, err := lib.BroadcastTxWithFileLock(val.Address, msg1)
|
||||
s.Require().NoError(err)
|
||||
args := []string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagChainID, s.network.Config.ChainID),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Moniker),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
string(taJSON),
|
||||
}
|
||||
_, err = clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdRegisterTrustAnchor(), args)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
_, err = clitestutil.GetRawLogFromTxOut(val, out)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
// create allowance for machine
|
||||
args = []string{
|
||||
val.Moniker, // granter
|
||||
addr.String(), // grantee
|
||||
fmt.Sprintf("--%s=%s", feegrant.FlagAllowedMsgs, "/planetmintgo.machine.MsgAttestMachine"),
|
||||
fmt.Sprintf("--%s=%s", feegrant.FlagSpendLimit, "2stake"),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
allowedMsgs := []string{"/planetmintgo.machine.MsgAttestMachine"}
|
||||
limit := sdk.NewCoins(sdk.NewInt64Coin("stake", 2))
|
||||
basic := feegrant.BasicAllowance{
|
||||
SpendLimit: limit,
|
||||
}
|
||||
var grant feegrant.FeeAllowanceI
|
||||
grant = &basic
|
||||
grant, err = feegrant.NewAllowedMsgAllowance(grant, allowedMsgs)
|
||||
s.Require().NoError(err)
|
||||
|
||||
_, err = clitestutil.ExecTestCLICmd(val.ClientCtx, feegrant.NewCmdFeeGrant(), args)
|
||||
msg2, err := feegrant.NewMsgGrantAllowance(grant, val.Address, addr)
|
||||
s.Require().NoError(err)
|
||||
_, err = lib.BroadcastTxWithFileLock(val.Address, msg2)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
_, err = clitestutil.GetRawLogFromTxOut(val, out)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
// attest machine with fee granter without funding the machine account first
|
||||
machine := sample.Machine(sample.Name, pubKey, prvKey, addr.String())
|
||||
machineJSON, err := json.Marshal(&machine)
|
||||
s.Require().NoError(err)
|
||||
|
||||
args = []string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagChainID, s.network.Config.ChainID),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, addr.String()),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFeeGranter, val.Address.String()),
|
||||
"--yes",
|
||||
string(machineJSON),
|
||||
}
|
||||
// name and address of private key with which to sign
|
||||
clientCtx := val.ClientCtx.
|
||||
WithFromAddress(addr).
|
||||
WithFromName("AllowanceMachine").
|
||||
WithFeeGranterAddress(val.Address)
|
||||
libConfig.SetClientCtx(clientCtx)
|
||||
|
||||
_, err = clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdAttestMachine(), args)
|
||||
msg3 := machinetypes.NewMsgAttestMachine(addr.String(), &machine)
|
||||
_, err = lib.BroadcastTxWithFileLock(addr, msg3)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
_, err = clitestutil.GetRawLogFromTxOut(val, out)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
args = []string{
|
||||
args := []string{
|
||||
pubKey,
|
||||
}
|
||||
|
||||
|
@ -72,6 +72,10 @@ func GetRawLogFromTxOut(val *network.Validator, out testutil.BufferWriter) (stri
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if txResponse.Code != 0 {
|
||||
err = errors.New(txResponse.RawLog)
|
||||
return "", err
|
||||
}
|
||||
args := []string{
|
||||
txResponse.TxHash,
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ var (
|
||||
ErrMachineNotFound = errorsmod.Register(ModuleName, 2, "machine not found")
|
||||
ErrTrustAnchorNotFound = errorsmod.Register(ModuleName, 3, "trust anchor not found")
|
||||
ErrTrustAnchorAlreadyInUse = errorsmod.Register(ModuleName, 4, "trust anchor already in use")
|
||||
ErrMachineIsNotCreator = errorsmod.Register(ModuleName, 5, "the machine.address is no the message creator address")
|
||||
ErrMachineIsNotCreator = errorsmod.Register(ModuleName, 5, "the machine.address is not the message creator address")
|
||||
ErrInvalidKey = errorsmod.Register(ModuleName, 6, "invalid key")
|
||||
ErrNFTIssuanceFailed = errorsmod.Register(ModuleName, 7, "an error occurred while issuing the machine NFT")
|
||||
ErrMachineTypeUndefined = errorsmod.Register(ModuleName, 8, "the machine type has to be defined")
|
||||
|
Loading…
x
Reference in New Issue
Block a user