@@ -89,9 +89,20 @@ func NewContract(platformScript []byte, marginFold uint64) ([]byte, error) {
8989
9090 builder .SetJumpTarget (0 )
9191 // alt stack [creater, taxRate, nftAsset, owner, marginAsset, marginAmount]
92- // data statck [newMarginAmount]
92+ // data statck [ownerSig, newMarginAmount]
9393 swapAltStack (builder , 0 , 0 )
9494 // alt stack [creater, taxRate, nftAsset, owner, newMarginAsset, newMarginAmount]
95+ // data statck [ownerSig]
96+ cpAltStack (builder , 2 )
97+ // alt stack [creater, taxRate, nftAsset, owner, newMarginAsset, newMarginAmount]
98+ // data statck [ownerSig, owner]
99+ builder .AddOp (vm .OP_TXSIGHASH )
100+ builder .AddOp (vm .OP_SWAP )
101+ // alt stack [creater, taxRate, nftAsset, owner, newMarginAsset, newMarginAmount]
102+ // data statck [ownerSig, txSigHash, owner]
103+ builder .AddOp (vm .OP_CHECKSIG )
104+ builder .AddOp (vm .OP_VERIFY )
105+ // alt stack [creater, taxRate, nftAsset, owner, newMarginAsset, newMarginAmount]
95106 // data statck []
96107 builder .SetJumpTarget (1 )
97108 builder .AddUint64 (0 )
@@ -119,6 +130,14 @@ func NewOffer(nftContract []byte) ([]byte, error) {
119130 builder .AddJumpIf (0 )
120131 builder .AddUint64 (1 )
121132 builder .AddJump (1 )
133+
134+ // need check sig for cancel func
135+ cpAltStack (builder , 2 )
136+ builder .AddOp (vm .OP_TXSIGHASH )
137+ builder .AddOp (vm .OP_SWAP )
138+ builder .AddOp (vm .OP_CHECKSIG )
139+ builder .AddOp (vm .OP_VERIFY )
140+
122141 builder .SetJumpTarget (0 )
123142 builder .AddUint64 (0 )
124143 builder .AddUint64 (1 )
@@ -134,6 +153,7 @@ func NewOffer(nftContract []byte) ([]byte, error) {
134153 builder .AddData (nftContract )
135154 builder .AddOp (vm .OP_CHECKOUTPUT )
136155 builder .SetJumpTarget (1 )
156+
137157 return builder .Build ()
138158}
139159
0 commit comments