Skip to content

Commit 82574bf

Browse files
committed
SBT allow prove ownership by anyone
1 parent 18fb3a8 commit 82574bf

File tree

3 files changed

+46
-10
lines changed

3 files changed

+46
-10
lines changed

packages/contracts/sbt-item/SbtItem.spec.ts

+46-6
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ describe('sbt item smc', () => {
275275
let someGuy = randomAddress()
276276

277277
let dataCell = new Cell()
278-
dataCell.bits.writeUint(777,16)
278+
dataCell.bits.writeUint(888,16)
279279

280280
let res = await sbt.contract.sendInternalMessage(new InternalMessage({
281281
to: sbt.address,
@@ -286,12 +286,32 @@ describe('sbt item smc', () => {
286286
body: new CellMessage(Queries.proveOwnership({
287287
to: randomAddress(),
288288
data: dataCell,
289-
withContent: false
289+
withContent: true
290290
}))
291291
})
292292
}))
293293

294-
expect(res.exit_code).toEqual(401)
294+
expect(res.exit_code).toEqual(0)
295+
296+
let [responseMessage] = res.actionList as [SendMsgAction]
297+
let response = responseMessage.message.body.beginParse()
298+
299+
let op = response.readUintNumber(32)
300+
let queryId = response.readUintNumber(64)
301+
let index = response.readUintNumber(256)
302+
let owner = response.readAddress() as Address
303+
let data = response.readRef()
304+
let withCont = response.readBit()
305+
let cont = response.readRef()
306+
307+
308+
expect(op).toEqual(OperationCodes.VerifyOwnership)
309+
expect(queryId).toEqual(0)
310+
expect(index).toEqual(777)
311+
expect(owner.toFriendly()).toEqual(defaultConfig.ownerAddress.toFriendly())
312+
expect(data.readUint(16).toNumber()).toEqual(888)
313+
expect(withCont).toEqual(true)
314+
expect(cont.readBuffer(4).toString()).toEqual('test')
295315
})
296316

297317
it('should prove ownership with content', async () => {
@@ -716,7 +736,7 @@ describe('single sbt', () => {
716736
let someGuy = randomAddress()
717737

718738
let dataCell = new Cell()
719-
dataCell.bits.writeUint(777,16)
739+
dataCell.bits.writeUint(888,16)
720740

721741
let res = await sbt.contract.sendInternalMessage(new InternalMessage({
722742
to: sbt.address,
@@ -727,12 +747,32 @@ describe('single sbt', () => {
727747
body: new CellMessage(Queries.proveOwnership({
728748
to: randomAddress(),
729749
data: dataCell,
730-
withContent: false,
750+
withContent: true,
731751
}))
732752
})
733753
}))
734754

735-
expect(res.exit_code).toEqual(401)
755+
expect(res.exit_code).toEqual(0)
756+
757+
let [responseMessage] = res.actionList as [SendMsgAction]
758+
let response = responseMessage.message.body.beginParse()
759+
760+
let op = response.readUintNumber(32)
761+
let queryId = response.readUintNumber(64)
762+
let index = response.readUintNumber(256)
763+
let owner = response.readAddress() as Address
764+
let data = response.readRef()
765+
let withCont = response.readBit()
766+
let cont = response.readRef()
767+
cont.readBuffer(1) // skip chain tag
768+
769+
expect(op).toEqual(OperationCodes.VerifyOwnership)
770+
expect(queryId).toEqual(0)
771+
expect(index).toEqual(0)
772+
expect(owner.toFriendly()).toEqual(defaultConfig.ownerAddress.toFriendly())
773+
expect(data.readUint(16).toNumber()).toEqual(888)
774+
expect(withCont).toEqual(true)
775+
expect(cont.readBuffer('test_content'.length).toString()).toEqual('test_content')
736776
})
737777

738778
it('should prove ownership with content', async () => {

packages/contracts/sources/sbt-item.fc

-2
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,6 @@ global int storage::nonce;
168168
return ();
169169
}
170170
if (op == op::prove_ownership()) {
171-
throw_unless(401, equal_slices(storage::owner_address, sender_address));
172-
173171
slice dest = in_msg_body~load_msg_addr();
174172
cell body = in_msg_body~load_ref();
175173
int with_content = in_msg_body~load_uint(1);

packages/contracts/sources/sbt-single.fc

-2
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,6 @@ global int storage::nonce;
190190
return ();
191191
}
192192
if (op == op::prove_ownership()) {
193-
throw_unless(401, equal_slices(storage::owner_address, sender_address));
194-
195193
slice dest = in_msg_body~load_msg_addr();
196194
cell body = in_msg_body~load_ref();
197195
int with_content = in_msg_body~load_uint(1);

0 commit comments

Comments
 (0)