Skip to content
This repository was archived by the owner on Mar 21, 2024. It is now read-only.

Commit c3610f1

Browse files
committed
add sig for nft contract func
1 parent b954590 commit c3610f1

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

nft/nft.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

nft/nft_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ var (
2222
ETH = testutil.MustDecodeAsset("78de44ffa1bce37b757c9eae8925b5f199dc4621b412ef0f3f46168865284a93")
2323

2424
utxoSourceID = testutil.MustDecodeHash("762ec536ea64f71feac5fd4000a4807fc8e9d08d757889bd0206a02b79f9db8e")
25-
ownerScirpt = []byte("ownerScirpt")
26-
buyerScirpt = []byte("buyerScirpt")
25+
ownerScirpt = testutil.MustDecodeHexString("0100000000000000000000000000000000000000000000000000000000000000") //[]byte("ownerScirpt")
26+
buyerScirpt = testutil.MustDecodeHexString("0100000000000000000000000000000000000000000000000000000000000000") //[]byte("buyerScirpt")
2727
)
2828

2929
// 从2个BTC的押金换成3个BTC的
@@ -52,6 +52,7 @@ func TestEditMargin(t *testing.T) {
5252
}
5353

5454
arguments := [][]byte{
55+
testutil.MustDecodeHexString("6c25b3220df660b06bf17ca881e6a31811fc4f33f78e5c0597a1e29b5d0030d9494bff417a237b907eac5cdce1dc0dfe1f258103dee32fcc84a2dd5e8c614209"),
5556
vm.Uint64Bytes(300000000),
5657
vm.Uint64Bytes(1),
5758
}
@@ -272,6 +273,7 @@ func TestCancelOffer(t *testing.T) {
272273
}
273274

274275
arguments := [][]byte{
276+
testutil.MustDecodeHexString("2dbbae17e2aed7639ba212f46fd28b9ccb122c1a24ebd1a48e2dddcaf675252e9adb7c8fe504fa4aad4d054d87701d93d67c5e62bee9ccdc442a39a207dcd106"),
275277
vm.Uint64Bytes(0),
276278
}
277279

0 commit comments

Comments
 (0)