Skip to content

Commit 7cb90dc

Browse files
authored
refactor: change mitum-nft cmds, operation, statekey name (#39)
* chore: udpate go.mod * feat: update config file * feat: add digest api process * feat: update init and run process * feat: update nft operations * feat: update hinters * feat: update command * refactor: change agent to operator
1 parent 3e9db18 commit 7cb90dc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1912
-1127
lines changed

cmds/approve.go

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package cmds
33
import (
44
"context"
55

6+
extensioncurrency "github.com/ProtoconNet/mitum-currency-extension/v2/currency"
67
"github.com/ProtoconNet/mitum-nft/nft"
78
"github.com/ProtoconNet/mitum-nft/nft/collection"
89
"github.com/pkg/errors"
@@ -15,13 +16,17 @@ import (
1516
type ApproveCommand struct {
1617
baseCommand
1718
cmds.OperationFlags
18-
Sender cmds.AddressFlag `arg:"" name:"sender" help:"sender address" required:"true"`
19-
Approved cmds.AddressFlag `arg:"" name:"approved" help:"approved account address" required:"true"`
20-
NFT NFTIDFlag `arg:"" name:"nft" help:"target nft to approve; \"<collection>,<idx>\""`
21-
Currency cmds.CurrencyIDFlag `arg:"" name:"currency" help:"currency id" required:"true"`
22-
sender base.Address
23-
approved base.Address
24-
nft nft.NFTID
19+
Sender cmds.AddressFlag `arg:"" name:"sender" help:"sender address" required:"true"`
20+
Contract cmds.AddressFlag `arg:"" name:"contract" help:"contract address" required:"true"`
21+
Collection string `arg:"" name:"collection" help:"collection name" required:"true"`
22+
Approved cmds.AddressFlag `arg:"" name:"approved" help:"approved account address" required:"true"`
23+
NFT NFTIDFlag `arg:"" name:"nft" help:"target nft to approve; \"<collection>,<idx>\""`
24+
Currency cmds.CurrencyIDFlag `arg:"" name:"currency" help:"currency id" required:"true"`
25+
sender base.Address
26+
contract base.Address
27+
collection extensioncurrency.ContractID
28+
approved base.Address
29+
nft nft.NFTID
2530
}
2631

2732
func NewApproveCommand() ApproveCommand {
@@ -62,6 +67,19 @@ func (cmd *ApproveCommand) parseFlags() error {
6267
cmd.sender = a
6368
}
6469

70+
if a, err := cmd.Contract.Encode(enc); err != nil {
71+
return errors.Wrapf(err, "invalid contract format, %q", cmd.Sender)
72+
} else {
73+
cmd.contract = a
74+
}
75+
76+
collection := extensioncurrency.ContractID(cmd.Collection)
77+
if err := collection.IsValid(nil); err != nil {
78+
return err
79+
} else {
80+
cmd.collection = collection
81+
}
82+
6583
if a, err := cmd.Approved.Encode(enc); err != nil {
6684
return errors.Wrapf(err, "invalid approved format, %q", cmd.Approved)
6785
} else {
@@ -81,7 +99,7 @@ func (cmd *ApproveCommand) parseFlags() error {
8199
func (cmd *ApproveCommand) createOperation() (base.Operation, error) {
82100
e := util.StringErrorFunc("failed to create approve operation")
83101

84-
item := collection.NewApproveItem(cmd.approved, cmd.nft, cmd.Currency.CID)
102+
item := collection.NewApproveItem(cmd.contract, cmd.collection, cmd.approved, cmd.nft, cmd.Currency.CID)
85103

86104
fact := collection.NewApproveFact(
87105
[]byte(cmd.Token),

cmds/collection_policy_updater.go

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,16 @@ type CollectionPolicyUpdaterCommand struct {
1818
baseCommand
1919
cmds.OperationFlags
2020
Sender cmds.AddressFlag `arg:"" name:"sender" help:"sender address" required:"true"`
21-
Collection string `arg:"" name:"collection" help:"collection symbol" required:"true"`
21+
Contract cmds.AddressFlag `arg:"" name:"contract" help:"contract address" required:"true"`
22+
Collection string `arg:"" name:"collection" help:"collection name" required:"true"`
2223
Name string `arg:"" name:"name" help:"collection name" required:"true"`
2324
Royalty uint `arg:"" name:"royalty" help:"royalty parameter; 0 <= royalty param < 100" required:"true"`
2425
Currency cmds.CurrencyIDFlag `arg:"" name:"currency" help:"currency id" required:"true"`
2526
URI string `name:"uri" help:"collection uri" optional:""`
2627
White cmds.AddressFlag `name:"white" help:"whitelisted address" optional:""`
2728
sender base.Address
29+
contract base.Address
30+
collection extensioncurrency.ContractID
2831
policy nftcollection.CollectionPolicy
2932
}
3033

@@ -61,23 +64,31 @@ func (cmd *CollectionPolicyUpdaterCommand) parseFlags() error {
6164
}
6265

6366
if a, err := cmd.Sender.Encode(enc); err != nil {
64-
return errors.Wrapf(err, "invalid sender format, %q", cmd.Sender)
67+
return errors.Wrapf(err, "invalid sender address format, %q", cmd.Sender)
6568
} else {
6669
cmd.sender = a
6770
}
6871

6972
var white base.Address = nil
7073
if cmd.White.String() != "" {
7174
if a, err := cmd.White.Encode(enc); err != nil {
72-
return errors.Wrapf(err, "invalid white format, %q", cmd.White)
75+
return errors.Wrapf(err, "invalid whitelist address format, %q", cmd.White)
7376
} else {
7477
white = a
7578
}
7679
}
7780

81+
if a, err := cmd.Contract.Encode(enc); err != nil {
82+
return errors.Wrapf(err, "invalid contract address format, %q", cmd.Contract)
83+
} else {
84+
cmd.contract = a
85+
}
86+
7887
collection := extensioncurrency.ContractID(cmd.Collection)
7988
if err := collection.IsValid(nil); err != nil {
8089
return err
90+
} else {
91+
cmd.collection = collection
8192
}
8293

8394
name := nftcollection.CollectionName(cmd.Name)
@@ -112,7 +123,14 @@ func (cmd *CollectionPolicyUpdaterCommand) parseFlags() error {
112123
func (cmd *CollectionPolicyUpdaterCommand) createOperation() (base.Operation, error) {
113124
e := util.StringErrorFunc("failed to create collection-policy-updater operation")
114125

115-
fact := nftcollection.NewCollectionPolicyUpdaterFact([]byte(cmd.Token), cmd.sender, extensioncurrency.ContractID(cmd.Collection), cmd.policy, cmd.Currency.CID)
126+
fact := nftcollection.NewCollectionPolicyUpdaterFact(
127+
[]byte(cmd.Token),
128+
cmd.sender,
129+
cmd.contract,
130+
cmd.collection,
131+
cmd.policy,
132+
cmd.Currency.CID,
133+
)
116134

117135
op, err := nftcollection.NewCollectionPolicyUpdater(fact)
118136
if err != nil {

cmds/collection_register.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ type CollectionRegisterCommand struct {
1818
baseCommand
1919
cmds.OperationFlags
2020
Sender cmds.AddressFlag `arg:"" name:"sender" help:"sender address" required:"true"`
21-
Target cmds.AddressFlag `arg:"" name:"target" help:"target account to register policy" required:"true"`
22-
Collection string `arg:"" name:"collection" help:"collection symbol" required:"true"`
21+
Contract cmds.AddressFlag `arg:"" name:"contract" help:"contract account to register policy" required:"true"`
22+
Collection string `arg:"" name:"collection" help:"collection name" required:"true"`
2323
Name string `arg:"" name:"name" help:"collection name" required:"true"`
2424
Royalty uint `arg:"" name:"royalty" help:"royalty parameter; 0 <= royalty param < 100" required:"true"`
2525
Currency cmds.CurrencyIDFlag `arg:"" name:"currency" help:"currency id" required:"true"`
2626
URI string `name:"uri" help:"collection uri" optional:""`
2727
White cmds.AddressFlag `name:"white" help:"whitelisted address" optional:""`
2828
sender base.Address
29-
target base.Address
29+
contract base.Address
3030
form nftcollection.CollectionRegisterForm
3131
}
3232

@@ -63,21 +63,21 @@ func (cmd *CollectionRegisterCommand) parseFlags() error {
6363
}
6464

6565
if a, err := cmd.Sender.Encode(enc); err != nil {
66-
return errors.Wrapf(err, "invalid sender format; %q", cmd.Sender)
66+
return errors.Wrapf(err, "invalid sender address format; %q", cmd.Sender)
6767
} else {
6868
cmd.sender = a
6969
}
7070

71-
if a, err := cmd.Target.Encode(enc); err != nil {
72-
return errors.Wrapf(err, "invalid target format; %q", cmd.Target)
71+
if a, err := cmd.Contract.Encode(enc); err != nil {
72+
return errors.Wrapf(err, "invalid contract address format; %q", cmd.Contract)
7373
} else {
74-
cmd.target = a
74+
cmd.contract = a
7575
}
7676

7777
var white base.Address = nil
7878
if cmd.White.String() != "" {
7979
if a, err := cmd.White.Encode(enc); err != nil {
80-
return errors.Wrapf(err, "invalid white format, %q", cmd.White)
80+
return errors.Wrapf(err, "invalid whitelist address format, %q", cmd.White)
8181
} else {
8282
white = a
8383
}
@@ -108,7 +108,7 @@ func (cmd *CollectionRegisterCommand) parseFlags() error {
108108
whites = append(whites, white)
109109
}
110110

111-
form := nftcollection.NewCollectionRegisterForm(cmd.target, collection, name, royalty, uri, whites)
111+
form := nftcollection.NewCollectionRegisterForm(cmd.contract, collection, name, royalty, uri, whites)
112112
if err := form.IsValid(nil); err != nil {
113113
return err
114114
}

cmds/delegate.go

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ type DelegateCommand struct {
1717
baseCommand
1818
cmds.OperationFlags
1919
Sender cmds.AddressFlag `arg:"" name:"sender" help:"sender address" required:"true"`
20-
Collection string `arg:"" name:"collection" help:"collection symbol" required:"true"`
21-
Agent cmds.AddressFlag `arg:"" name:"agent" help:"agent account address"`
20+
Contract cmds.AddressFlag `arg:"" name:"contract" help:"contract address" required:"true"`
21+
Collection string `arg:"" name:"collection" help:"collection name" required:"true"`
22+
Operator cmds.AddressFlag `arg:"" name:"operator" help:"operator account address"`
2223
Currency cmds.CurrencyIDFlag `arg:"" name:"currency" help:"currency id" required:"true"`
2324
Mode string `name:"mode" help:"delegate mode" optional:""`
2425
sender base.Address
25-
symbol extensioncurrency.ContractID
26-
agent base.Address
26+
contract base.Address
27+
collection extensioncurrency.ContractID
28+
operator base.Address
2729
mode nftcollection.DelegateMode
2830
}
2931

@@ -60,7 +62,13 @@ func (cmd *DelegateCommand) parseFlags() error {
6062
}
6163

6264
if a, err := cmd.Sender.Encode(enc); err != nil {
63-
return errors.Wrapf(err, "invalid sender format; %q", cmd.Sender)
65+
return errors.Wrapf(err, "invalid sender address format; %q", cmd.Sender)
66+
} else {
67+
cmd.sender = a
68+
}
69+
70+
if a, err := cmd.Contract.Encode(enc); err != nil {
71+
return errors.Wrapf(err, "invalid contract address format; %q", cmd.Contract)
6472
} else {
6573
cmd.sender = a
6674
}
@@ -69,12 +77,12 @@ func (cmd *DelegateCommand) parseFlags() error {
6977
if err := symbol.IsValid(nil); err != nil {
7078
return err
7179
}
72-
cmd.symbol = symbol
80+
cmd.collection = symbol
7381

74-
if a, err := cmd.Agent.Encode(enc); err != nil {
75-
return errors.Wrapf(err, "invalid agent format; %q", cmd.Agent)
82+
if a, err := cmd.Operator.Encode(enc); err != nil {
83+
return errors.Wrapf(err, "invalid operator address format; %q", cmd.Operator)
7684
} else {
77-
cmd.agent = a
85+
cmd.operator = a
7886
}
7987

8088
if len(cmd.Mode) < 1 {
@@ -94,7 +102,7 @@ func (cmd *DelegateCommand) parseFlags() error {
94102
func (cmd *DelegateCommand) createOperation() (base.Operation, error) {
95103
e := util.StringErrorFunc("failed to create delegate operation")
96104

97-
items := []nftcollection.DelegateItem{nftcollection.NewDelegateItem(cmd.symbol, cmd.agent, cmd.mode, cmd.Currency.CID)}
105+
items := []nftcollection.DelegateItem{nftcollection.NewDelegateItem(cmd.contract, cmd.collection, cmd.operator, cmd.mode, cmd.Currency.CID)}
98106

99107
fact := nftcollection.NewDelegateFact([]byte(cmd.Token), cmd.sender, items)
100108

0 commit comments

Comments
 (0)