Skip to content

Commit e09cce1

Browse files
authored
nft: Batch NFT mint extrinsics (#1576)
1 parent 9bc98a3 commit e09cce1

File tree

11 files changed

+638
-133
lines changed

11 files changed

+638
-133
lines changed

centchain/api.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ func init() {
4343

4444
var log = logging.Logger("centchain-client")
4545

46+
type CallProviderFn func(metadata *types.Metadata) (*types.Call, error)
47+
4648
// ExtrinsicInfo holds details of a successful extrinsic
4749
type ExtrinsicInfo struct {
4850
Hash types.Hash

centchain/test_client.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ import (
1313
"github.com/centrifuge/go-substrate-rpc-client/v4/types"
1414
)
1515

16-
type CallProviderFn func(metadata *types.Metadata) (*types.Call, error)
17-
1816
type TestClient struct {
1917
api *gsrpc.SubstrateAPI
2018
meta *types.Metadata

documents/anchor_job.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,10 @@ func (a *AnchorJob) loadTasks() {
9090
next: "pre_commit",
9191
},
9292
"pre_commit": {
93-
runnerFunc: func(args []interface{}, overrides map[string]interface{}) (interface{},
94-
error) {
93+
runnerFunc: func(
94+
args []interface{},
95+
overrides map[string]interface{},
96+
) (interface{}, error) {
9597
preCommit := args[2].(bool)
9698
if !preCommit {
9799
return nil, nil

identity/v2/test_utils.go

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"math/big"
1111
"time"
1212

13+
"github.com/centrifuge/go-centrifuge/pallets/utility"
14+
1315
keystoreTypes "github.com/centrifuge/chain-custom-types/pkg/keystore"
1416
proxyType "github.com/centrifuge/chain-custom-types/pkg/proxy"
1517
"github.com/centrifuge/go-centrifuge/centchain"
@@ -215,7 +217,7 @@ func ExecutePostAccountBootstrap(
215217

216218
defer testClient.Close()
217219

218-
if _, err = testClient.SubmitAndWait(ctx, originKrp, batchCalls(callCreationFns...)); err != nil {
220+
if _, err = testClient.SubmitAndWait(ctx, originKrp, utility.BatchCalls(callCreationFns...)); err != nil {
219221
return fmt.Errorf("couldn't submit post account bootstrap batch call: %w", err)
220222
}
221223

@@ -466,27 +468,3 @@ func GetAddKeysCall(
466468
return &proxyCall, nil
467469
}, nil
468470
}
469-
470-
func batchCalls(callCreationFns ...centchain.CallProviderFn) centchain.CallProviderFn {
471-
return func(meta *types.Metadata) (*types.Call, error) {
472-
var calls []*types.Call
473-
474-
for _, callCreationFn := range callCreationFns {
475-
call, err := callCreationFn(meta)
476-
477-
if err != nil {
478-
return nil, fmt.Errorf("couldn't create call: %w", err)
479-
}
480-
481-
calls = append(calls, call)
482-
}
483-
484-
batchCall, err := types.NewCall(meta, "Utility.batch_all", calls)
485-
486-
if err != nil {
487-
return nil, err
488-
}
489-
490-
return &batchCall, nil
491-
}
492-
}

nft/v3/bootstrapper.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/centrifuge/go-centrifuge/jobs"
99
"github.com/centrifuge/go-centrifuge/pallets"
1010
"github.com/centrifuge/go-centrifuge/pallets/uniques"
11+
"github.com/centrifuge/go-centrifuge/pallets/utility"
1112
"github.com/centrifuge/go-centrifuge/pending"
1213
)
1314

@@ -54,20 +55,26 @@ func (*Bootstrapper) Bootstrap(ctx map[string]interface{}) error {
5455
return errors.New("proxy API not initialised")
5556
}
5657

58+
utilityAPI, ok := ctx[pallets.BootstrappedUtilityAPI].(utility.API)
59+
60+
if !ok {
61+
return errors.New("utility API not initialised")
62+
}
63+
5764
go dispatcher.RegisterRunner(commitAndMintNFTV3Job, &CommitAndMintNFTJobRunner{
5865
accountsSrv: accountsSrv,
5966
pendingDocsSrv: pendingDocsSrv,
6067
docSrv: docSrv,
6168
dispatcher: dispatcher,
62-
api: uniquesAPI,
69+
utilityAPI: utilityAPI,
6370
ipfsPinningSrv: ipfsPinningSrv,
6471
})
6572

6673
go dispatcher.RegisterRunner(mintNFTV3Job, &MintNFTJobRunner{
6774
accountsSrv: accountsSrv,
6875
docSrv: docSrv,
6976
dispatcher: dispatcher,
70-
api: uniquesAPI,
77+
utilityAPI: utilityAPI,
7178
ipfsPinningSrv: ipfsPinningSrv,
7279
})
7380

0 commit comments

Comments
 (0)