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

Commit a5caf57

Browse files
added additional validaiton logic to fractional unlock
1 parent f842d20 commit a5caf57

File tree

17 files changed

+58
-46
lines changed

17 files changed

+58
-46
lines changed

AUDIT_NOTES.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,13 @@ This prevents the naming collision:
140140
nftName "TOKEN" 13 /= nftName "TOKEN1" 3
141141
-- TOKEN_13 /= TOKEN1_3
142142
```
143+
144+
# QSP-16 Unlock Operation Does Not Validate NFT Transfer
145+
146+
A new line of logic has been added to the unlock validation inside LockTokenizedNFTContract.
147+
148+
```hs
149+
(traceIfFalse "Invalid Tkn Error" $ Value.valueOf validatingValue tPid (cdtTokenizedTn datum) == 1)
150+
```
151+
152+
Now the validating value inside the unlock function must have the value of the tokenized NFT.

final.check

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
6ca692d032992547edb7d439eb6b66c2eee6817cb5b88be87add5ae0348c314f ./hash.hashes
2-
aa053dc287eb9ae3e6d2cbb3492ca55a572a18b48531e23db6f0fd6deec6280b ./policy.hashes
1+
2ec41aa74acff093864828b700696711862e3346f64e3d9a31c781d72f93cb2c ./hash.hashes
2+
38477431a1ccdc5313ddd4d37cc16d7e3b9d015622ee4d5b272d370f4683f643 ./policy.hashes

fractionalize-scripts/data/datum.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"constructor": 0,
33
"fields": [
44
{
5-
"bytes": "cda4fd8dee486eddacc4c0ad1f7f84f07301caf545ef883dda1db196"
5+
"bytes": "518464f0931588fce7194af05e5f8b77c462698d26e3b32c3097c1e8"
66
},
77
{
88
"bytes": "4e45574d5f30"

hash.hashes

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
136105f853e2189df716b855222d978607a75d131d59a40dcc0602a83ac52073 ./nft-locking-contract/validator.hash
2-
0758e8b69c2bffaf57f25a81932faf44ac9096c024ee38680f55625569ac0543 ./locking-contract/validator.hash
2+
a84870045234377a65b893758880c182cd688dc162aded8646dd6e207d355b43 ./locking-contract/validator.hash
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"type": "PlutusScriptV2",
33
"description": "",
4-
"cborHex": "590cc1590cbe010000323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232232223232323232533553355333573460800020562a666ae68c0fc0040d80f84cc060cc0500f0cc059400c05ccc060cc0500eccc048c055400d2002330183301403a33013500448008cc060cc05124010d4d696e74696e67204572726f720050023301449113496e76616c696420446174756d204572726f7200333304522225335003130354910d4e6f7468696e6720466f756e6400221533533355303803e30160172350012233355303b041301901a235001223335001233029480000040a08cc0a40052000001330103500220353355303b03e23500122330390023355303e041235001223303c0023335001370090003802337000029000000998080020018a999a9a80111110010981ba49084e6f20446174756d0021533533333335748002464a666ae68c120c1340044c8cccd55cf800901b9191999aab9f0012039233335573e6ae8800894cd54cd4c070d5d080290981f181f80081c90a99a980e9aba100421303f300200103a039203a0450443574400408460980020686ea800880d080d080d080d00fc84c94ccd5cd19b8f35001040350020401333573466e3cd40040f0d40080f00d80d40d140404c0e124010942616420446174756d00213038490108456d62656464656400133300600100400350045335301a5005213535001034203013031491144e6f20496e70757420746f2056616c696461746500330393303048811cd58e7e99ae0a7a2ca3229938009577375f0e7e92b5776507c6cff709003303933030355008033480080b40b44cc060cc0500f0cc059400c05ccc060cc0500eccc048c055400d2002330183301403a33013500448000cc05124010d4275726e696e67204572726f720050021120011303149103505435003043375400c2a66a666086444a66a00220044426a004446600e66660944444a66a00220044426a00444a666ae68c1300044ccc02001c01800c4ccc02001ccc11848ccc00402000c00801800c00801800400c0acd540048888888888880204c0bc0ec884d40088894cd40104cc06ccc07000cd5402c0e8cc070008d5402c0d8884c0d81084d540080d04c94cd4c05c00484d400488d40048888d402088d4008888888888888ccd54c11812888d400888894cd4d406088d401888c8cd40148cd401094ccd5cd19b8f00200100304a204b2335004204b25333573466e3c00800400c12854cd400c854cd400884cd40088cd40088cd40088cd40088cc0ec00800481388cd400881388cc0ec008004888138888cd401081388894ccd5cd19b8700600315333573466e1c0140084cc10001000413c13c12054cd400481201484cc14401801440140fc02854cd5ce2481024c66001650011325333573460766080002264646464246600200600460486ae84d5d1001a999ab9a303d3042001132323232323232323232323232323232323232323232321233333333333300101801601401201000e00c009007005003002303e357426ae88008ccc0d9d710009aba10013574400466606806c40026ae84004d5d100119819bae357420026ae8800d4ccd5cd1826182880089919191909198008020012999ab9a304f3054001132321233001003002302e357426ae88c150008cc0b9d69aba1305300104e37546ae84d5d11829001a999ab9a304d3052001132321233001003002302c357426ae88c148008cc0b1d69aba1305100104c37546ae84c14000412cdd51aba10013574400466605a062eb4d5d08009aba20023302c02e357420026ae88008ccc0a5d70141aba10013574400466604eeb8098d5d08009aba200233026022357420026ae88008cc09007cd5d08009aba230420023302201d3574260820020786ea8d5d0800981f80081d1baa001132533357346070607a002264660546eb8d5d08009bae357426ae88004c0f00040dcdd50009119aa981681811a8009119815801199a800919aa981881a11a800911981780118060008009119980400b001000919aa981881a11a80091198178011807000800999801808801000911199aa981601801899aa981681811a80091198158011804000999aa9816018111a80111299a999aa981701a198161119980501a801000980401791a8009119805001002803080189981a80200181280099aa981681811a80091198158011982011299a800898060019109a80111299a9980600100408911198010050020980300180200111980091299a801016880081090911180180211999999aba4001202020202020202023023375c00405642444600200846604244666a0060540040026a002048246600201003a4466606a444a66a00426601e0020084426a004446a0024444a666a00426601600e012426601801066e000292002213300c0083370001490010012400044666068444a66a00426601c0020084426a0044444a666a00426601200a00e426601400c66e000212002213300a0063370001090010012400044a66a002048266ae700080688d400488888888888803088d40088888888888894cd4ccd54c0a80c004c94ccd5cd19b8f00e00113028001024004202f02348811c7c1fd41de14a3997825afa2d54a65edb7d253c95c83d400c6366dea400225335002100101522333573466e3c0080040580548d400488d4008888888888888cccd40348088808880888ccd54c0a00b80448d4004894cd54ccd5cd19b8f35002030350040301333573466e1cd40080b0d40100b00980940904c0a000c090034cc054894cd40088400c400404488ccd5cd19b8700200101301223253335734604a0020362a666ae68c09000404008cc0a0dd50009119192999ab9a302700111222001153335734604c0022642444600600860086ae84c0a400854ccd5cd18128008891100101218148009baa001232533357346044604e00226464246600200600460086ae84d5d1181380118061aba130260010213754002464a666ae68c084c0980044c8c8c8c8c8c8c8c8c848cccc00402401c00c008cc02dd71aba135744008a666ae68c0a80044c84888c008010d5d098160010a999ab9a302900113212223001004375c6ae84c0b000854ccd5cd18140008891100181398160009baa357420026ae88008ccc021d70039aba100135744604e006a666ae68c088c09c0044c8c848cc00400c008cc01402cd5d09aba23027002300b35742604c0020426ea8d5d098128008101baa0012232325333573460440022602460086ae84c09800854ccd5cd181180080701098130009baa0013300175ceb4888cc09488cccd55cf80090081191980e9980a180398140009803181380098021aba2003357420040346eac00488cc08c88cccd55cf800900711980d18029aba10023003357440040306eb00048c8c94ccd5cd181000089909111180200298021aba13021002153335734603e00226424444600400a600a6ae84c08400854ccd5cd180f00089909111180080298039aba13021002153335734603a00226424444600600a6eb8d5d0981080100e18108009baa001232325333573466e1d200c00111222200f15333573466e1d200a00111222222200415333573466e1d2008001132321222222233001009008375a6ae84d5d118108019bae3574260400042a666ae68c07c0044c8c848888888cc008024020dd71aba13574460420066eb8d5d098100010a999ab9a301e001132321222222233006009008375c6ae84d5d1181080198021aba13020002153335734603a00226424444444600e01060086ae84c08000854ccd5cd180e00089909111111180280418021aba1302000201b3020001375400246464a666ae68c0700044c8c8c8c8488ccc00401801000cdd69aba1357440046eb4d5d08009aba23020003375a6ae84c07c00854ccd5cd180d800899091180100198021aba1301f00201a301f001375400246464a666ae68c06c0044c8488c00400cdd71aba1301e002153335734603400226424460040066eb8d5d0980f00100c980f0009baa001232533357346030603a0022646424660020060046eb4d5d09aba2301d002300335742603800202e6ea80048c94ccd5cd180b980e00089bae35742603600202c6ea80044004401c402888800c8488c00800c8848cc00400c00894cd5ce0008b18099108911299a80089a801803110999a8028061802001199aa98038068028020009100098089108911299a800880111099802801199aa98038058028020009808110891299a80080291099805180200119aa98030048020008880091001090009109119800802001a4811353696e676c65204f7574707574204572726f720049011253696e676c6520496e707574204572726f72004901105369676e696e67205478204572726f720049010f4d696e742f4275726e204572726f7200153357389201035054310016370e90001b8748008dc3a40086e1d20065573caae748c8c00400488cc00cc008008005"
4+
"cborHex": "590d27590d2401000032323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232232223232323232325335533553335734608400205a2a666ae68c1040040e01004cc068cc0540f8cc05d400c064cc068cc0540f4cc04cc059400d20023301a3301503c33014500448008cc068cc05524010d4d696e74696e67204572726f720050023301549113496e76616c696420446174756d204572726f7200333304722225335003130374910d4e6f7468696e6720466f756e6400221533533355303a04030170182350012233355303d043301a01b235001223335001233029480000040a08cc0a40052000001330113500220373355303d040235001223303b00233553040043235001223303e0023335001370090003802337000029000000998088020018a999a9a80111110010981ca49084e6f20446174756d0021533533333335748002464a666ae68c128c13c0044c8cccd55cf800901c9191999aab9f001203b233335573e6ae8800894cd54cd4c074d5d0802909820182080081d90a99a980f1aba1004213041300200103c03b203c04704635744004088609c00206c6ea800880d880d880d880d810484c94ccd5cd19b8f35001042350020421333573466e3cd40040f8d40080f80e00dc0d940444c0e924010942616420446174756d0021303a490108456d626564646564001333006001004003500450053303b330320183303b33032355009035480080bc0bc4c8cc06ccc0580fccc0614010068cc06ccc0580f8cc050c05d401120023301b3301603d33015500548000cc06ccc05924010d4275726e696e67204572726f720050033301649111496e76616c696420546b6e204572726f72003301d33048223350014800088d4008894ccd5cd19b8f00201f13304e223350014800088d4008894ccd5cd19b8f00200d10011300600300113006003500648008d540240d44480044c0cd240103505435003045375400e2a66a66608a444a66a00220044426a004446600e66660984444a66a00220044426a00444a666ae68c1380044ccc02001c01800c4ccc02001ccc12048ccc00402000c00801800c00801800400c0b4d540048888888888880204c0c40f4884d40088894cd40104cc074cc07800cd540300f0cc078008d540300e0884c0e01104d5400c0d84c94cd4c06800484d400488d40048888d402088d4008888888888888ccd54c12013088d400888894cd4d406088d401888c8cd40148cd401094ccd5cd19b8f00200100304c204d2335004204d25333573466e3c00800400c13054cd400c854cd400884cd40088cd40088cd40088cd40088cc0f400800481408cd400881408cc0f4008004888140888cd401081408894ccd5cd19b8700600315333573466e1c0140084cc10001000414414412854cd400481281504cc14c018014401410402854cd5ce2481024c66001650021533530185001213535001031202d1302e4901144e6f20496e70757420746f2056616c69646174650013253335734607860820022646464642466002006004604a6ae84d5d1001a999ab9a303e3043001132323232323232323232323232323232323232323232321233333333333300101801601401201000e00c009007005003002303f357426ae88008ccc0ddd710009aba10013574400466606a06e40026ae84004d5d10011981a3ae357420026ae8800d4ccd5cd1826982900089919191909198008020012999ab9a30503055001132321233001003002302f357426ae88c154008cc0bdd69aba1305400104f37546ae84d5d11829801a999ab9a304e3053001132321233001003002302d357426ae88c14c008cc0b5d69aba1305200104d37546ae84c144004130dd51aba10013574400466605c064eb4d5d08009aba20023302d02f357420026ae88008ccc0a9d70149aba100135744004666050eb809cd5d08009aba200233027023357420026ae88008cc094080d5d08009aba230430023302301e35742608400207a6ea8d5d0800982000081d9baa001132533357346072607c002264660566eb8d5d08009bae357426ae88004c0f40040e0dd50009119aa981701891a8009119816001199a800919aa981901a91a800911981800118060008009119980400b801000919aa981901a91a80091198180011807000800999801809001000911199aa981681881919aa981701891a80091198160011804000999aa9816818911a80111299a999aa981781a998169119980501b001000980401811a8009119805001002803080189981b00200181300099aa981701891a80091198160011982091299a800898060019109a80111299a9980600100408911198010050020980300180200111980091299a801017080081110911180180211999999aba4001202120212021202123024375c00405842444600200846604444666a0060560040026a00204a246600201203c4466606c444a66a00426601c0020084426a004446a0024444a666a00426601600e012426601801066e000292002213300c008337000149001001240004466606a444a66a00426601a0020084426a0044444a666a00426601200a00e426601400c66e000212002213300a0063370001090010012400044a66a00204a266ae7000806c8d400488888888888803088d40088888888888894cd4ccd54c0ac0c405494ccd5cd19b8f00e00113029001025004203002448811cd58e7e99ae0a7a2ca3229938009577375f0e7e92b5776507c6cff7090048811c7c1fd41de14a3997825afa2d54a65edb7d253c95c83d400c6366dea400225335002100101522333573466e3c00800405805488ccd5cd19b8700200101501423500122350022222222222223333500d202120212021233355302702d0112350012253355333573466e3cd40080bcd40100bc4ccd5cd19b873500202b3500402b0250240231302700302300d3301422533500221003100101023253335734604a0020362a666ae68c09000404008cc0a0dd50009119192999ab9a302700111222001153335734604c0022642444600600860086ae84c0a400854ccd5cd18128008891100101218148009baa001232533357346044604e00226464246600200600460086ae84d5d1181380118061aba130260010213754002464a666ae68c084c0980044c8c8c8c8c8c8c8c8c848cccc00402401c00c008cc02dd71aba135744008a666ae68c0a80044c84888c008010d5d098160010a999ab9a302900113212223001004375c6ae84c0b000854ccd5cd18140008891100181398160009baa357420026ae88008ccc021d70039aba100135744604e006a666ae68c088c09c0044c8c848cc00400c008cc01402cd5d09aba23027002300b35742604c0020426ea8d5d098128008101baa0012232325333573460440022602460086ae84c09800854ccd5cd181180080701098130009baa0013300175ceb4888cc09488cccd55cf80090081191980e9980a180398140009803181380098021aba2003357420040346eac00488cc08c88cccd55cf800900711980d18029aba10023003357440040306eb00048c8c94ccd5cd181000089909111180200298021aba13021002153335734603e00226424444600400a600a6ae84c08400854ccd5cd180f00089909111180080298039aba13021002153335734603a00226424444600600a6eb8d5d0981080100e18108009baa001232325333573466e1d200c00111222200f15333573466e1d200a00111222222200415333573466e1d2008001132321222222233001009008375a6ae84d5d118108019bae3574260400042a666ae68c07c0044c8c848888888cc008024020dd71aba13574460420066eb8d5d098100010a999ab9a301e001132321222222233006009008375c6ae84d5d1181080198021aba13020002153335734603a00226424444444600e01060086ae84c08000854ccd5cd180e00089909111111180280418021aba1302000201b3020001375400246464a666ae68c0700044c8c8c8c8488ccc00401801000cdd69aba1357440046eb4d5d08009aba23020003375a6ae84c07c00854ccd5cd180d800899091180100198021aba1301f00201a301f001375400246464a666ae68c06c0044c8488c00400cdd71aba1301e002153335734603400226424460040066eb8d5d0980f00100c980f0009baa001232533357346030603a0022646424660020060046eb4d5d09aba2301d002300335742603800202e6ea80048c94ccd5cd180b980e00089bae35742603600202c6ea80044004401c402888800c8488c00800c8848cc00400c00894cd5ce0008b18099108911299a80089a801803110999a8028061802001199aa98038068028020009100098089108911299a800880111099802801199aa98038058028020009808110891299a80080291099805180200119aa98030048020008880091001090009109119800802001a4811353696e676c65204f7574707574204572726f720049011253696e676c6520496e707574204572726f72004901105369676e696e67205478204572726f720049010f4d696e742f4275726e204572726f7200153357389201035054310016370e90001b8748008dc3a40086e1d20065573caae748c8c00400488cc00cc008008005"
55
}

locking-contract/src/LockTokenizedNFTContract.hs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,12 @@ mkValidator ScriptParameters {..} datum redeemer context =
9898
&& (traceIfFalse "Invalid Datum Error" $ isDatumConstant contOutputs validatingValue singularNFT) -- value is cont and the datum is correct.
9999

100100
-- | Unlock Tokenized Token from contract by solidifying the fractional tokens.
101-
Unlock -> (traceIfFalse "Signing Tx Error" $ ContextsV2.txSignedBy info mainPkh) -- newm signs it
102-
&& (traceIfFalse "Single Input Error" $ UsefulFuncs.isNInputs txInputs 1) -- single script input
103-
&& (traceIfFalse "Single Output Error" $ UsefulFuncs.isNOutputs contOutputs 0) -- single script output
104-
&& (traceIfFalse "Burning Error" checkMintedAmount) -- burn the ft only
101+
Unlock -> (traceIfFalse "Signing Tx Error" $ ContextsV2.txSignedBy info mainPkh) -- newm signs it
102+
&& (traceIfFalse "Single Input Error" $ UsefulFuncs.isNInputs txInputs 1) -- single script input
103+
&& (traceIfFalse "Single Output Error" $ UsefulFuncs.isNOutputs contOutputs 0) -- single script output
104+
&& (traceIfFalse "Burning Error" checkMintedAmount) -- burn the ft only
105+
&& (traceIfFalse "Invalid Tkn Error" $ Value.valueOf validatingValue tPid (cdtTokenizedTn datum) == 1) -- Must contain the starter token
106+
105107
where
106108
info :: PlutusV2.TxInfo
107109
info = PlutusV2.scriptContextTxInfo context

locking-contract/validator.bytes

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[118, 79, 198, 23, 32, 40, 12, 115, 70, 85, 158, 105, 135, 148, 19, 99, 21, 7, 4, 39, 218, 24, 26, 248, 50, 28, 114, 60]
1+
[110, 6, 42, 201, 28, 35, 47, 116, 223, 94, 195, 234, 131, 2, 177, 154, 221, 242, 151, 227, 154, 186, 120, 244, 130, 185, 78, 68]

locking-contract/validator.hash

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
764fc61720280c7346559e698794136315070427da181af8321c723c
1+
6e062ac91c232f74df5ec3ea8302b19addf297e39aba78f482b94e44

0 commit comments

Comments
 (0)