tx · 9yyHvRyJySwSgJeGKbL7CDARnTGEJC8YTNDJAhWxBqoM 3PGDBqydxV1QvutiaoHaZy1xxcMojQeY66e: -0.00200000 Waves 2022.08.02 14:45 [3232343] smart account 3PGDBqydxV1QvutiaoHaZy1xxcMojQeY66e > SELF 0.00000000 Waves
{ "type": 13, "id": "9yyHvRyJySwSgJeGKbL7CDARnTGEJC8YTNDJAhWxBqoM", "fee": 200000, "feeAssetId": null, "timestamp": 1659440736306, "version": 2, "chainId": 87, "sender": "3PGDBqydxV1QvutiaoHaZy1xxcMojQeY66e", "senderPublicKey": "G9iQ91rKzdTCnf9YCZtYqbpjWQZmFKikSjLF6QbBLpHP", "proofs": [ "44gmJ6qwNp5zwWxuz7KcxX1MzKBTuKhLUAryf8U9djnFajuvtTkz58XCqBUaaAri9o3FDSXh9Hzn5e4un24oj624" ], "script": "base64:AAIFAAAAAAAAAAcIAhIDCgEIAAAACAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkEAAAAA3ZhbAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgIAAAAABQAAAAN2YWwBAAAADXRyeUdldEludGVnZXIAAAABAAAAA2tleQQAAAADdmFsBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAABQAAAAN2YWwBAAAAB2lzT3duZXIAAAABAAAAB2FkZHJlc3MJAAAAAAAAAgUAAAAHYWRkcmVzcwUAAAAEdGhpcwAAAAAbQ09VUlNfQ0VSVElGSUNBVEVfVElMRV9URVhUAgAAAA9ORlQgQ2VydGlmaWNhdGUAAAAAJ0NPVVJTX0NFUlRJRklDQVRFX0RFU0NSSVBUSU9OX0xFRlRfVEVYVAIAAABgVGhpcyBORlQgY2VydGlmaWNhdGUgY2VydGlmaWVzIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBjb3Vyc2UgZm9yIGEgdXNlciB3aXRoIGEgd2FsbGV0IGFkZHJlc3Mgb2YgAAAAAChDT1VSU19DRVJUSUZJQ0FURV9ERVNDUklQVElPTl9SSUdIVF9URVhUAgAAAKMuIFRoZSB1c2VyIGhhcyBnYWluZWQgaW4tZGVwdGgga25vd2xlZGdlIGluIHVuZGVyc3RhbmRpbmcgdGhlIG9wZXJhdGlvbiBvZiB0aGUgYmxvY2tjaGFpbiwgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZXhjaGFuZ2UsIGFuZCBzdWNjZXNzZnVsbHkgcGFzc2VkIHRoZSBjb3Vyc2UgZXhhbXMuAQAAAB5nZXRDb3Vyc0NlcnRpZmljYXRlRGVzY3JpcHRpb24AAAABAAAAB2FkZHJlc3MJAAEsAAAAAgkAASwAAAACBQAAACdDT1VSU19DRVJUSUZJQ0FURV9ERVNDUklQVElPTl9MRUZUX1RFWFQFAAAAB2FkZHJlc3MFAAAAKENPVVJTX0NFUlRJRklDQVRFX0RFU0NSSVBUSU9OX1JJR0hUX1RFWFQAAAAAK0NPVVJTX0VSUk9SX0NFUlRJRklDQVRFX0FMUkVBRFlfSVNTVUVEX1RFWFQCAAAANUEgY2VydGlmaWNhdGUgaGFzIGFscmVhZHkgYmVlbiBpc3N1ZWQgYXQgeW91ciBhZGRyZXNzAAAAAQAAAAFpAQAAAAhpc3N1ZU5GVAAAAAEAAAAHYWRkcmVzcwQAAAADa2V5CQABLAAAAAICAAAACGhpc3RvcnlfBQAAAAdhZGRyZXNzAwkAAAAAAAACCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQUAAAADa2V5AgAAAAAJAAUUAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAACGhpc3RvcnlfBQAAAAdhZGRyZXNzAgAAAAR0cnVlCQAETAAAAAIJAARCAAAABQUAAAAbQ09VUlNfQ0VSVElGSUNBVEVfVElMRV9URVhUCQEAAAAeZ2V0Q291cnNDZXJ0aWZpY2F0ZURlc2NyaXB0aW9uAAAAAQUAAAAHYWRkcmVzcwAAAAAAAAAAAQAAAAAAAAAAAAcFAAAAA25pbAUAAAAEdW5pdAkAAAIAAAABBQAAACtDT1VSU19FUlJPUl9DRVJUSUZJQ0FURV9BTFJFQURZX0lTU1VFRF9URVhUAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXl675T8", "height": 3232343, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4QvJp1E42QdKKQFCCt8T3UXTArtQS6WrZck6EvPiCsUP Next: 2qLPemo1fF3NPLmJ9hMwnm1yQJPgcDGjMdVMuPqFtr7m Diff:
Old | New | Differences | |
---|---|---|---|
46 | 46 | } | |
47 | 47 | ||
48 | 48 | ||
49 | + | @Verifier(tx) | |
50 | + | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
51 | + |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func tryGetString (key) = { | |
5 | 5 | let val = match getString(this, key) { | |
6 | 6 | case b: String => | |
7 | 7 | b | |
8 | 8 | case _ => | |
9 | 9 | "" | |
10 | 10 | } | |
11 | 11 | val | |
12 | 12 | } | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func tryGetInteger (key) = { | |
16 | 16 | let val = match getInteger(this, key) { | |
17 | 17 | case b: Int => | |
18 | 18 | b | |
19 | 19 | case _ => | |
20 | 20 | 0 | |
21 | 21 | } | |
22 | 22 | val | |
23 | 23 | } | |
24 | 24 | ||
25 | 25 | ||
26 | 26 | func isOwner (address) = (address == this) | |
27 | 27 | ||
28 | 28 | ||
29 | 29 | let COURS_CERTIFICATE_TILE_TEXT = "NFT Certificate" | |
30 | 30 | ||
31 | 31 | let COURS_CERTIFICATE_DESCRIPTION_LEFT_TEXT = "This NFT certificate certifies the completion of the course for a user with a wallet address of " | |
32 | 32 | ||
33 | 33 | let COURS_CERTIFICATE_DESCRIPTION_RIGHT_TEXT = ". The user has gained in-depth knowledge in understanding the operation of the blockchain, interacting with the exchange, and successfully passed the course exams." | |
34 | 34 | ||
35 | 35 | func getCoursCertificateDescription (address) = ((COURS_CERTIFICATE_DESCRIPTION_LEFT_TEXT + address) + COURS_CERTIFICATE_DESCRIPTION_RIGHT_TEXT) | |
36 | 36 | ||
37 | 37 | ||
38 | 38 | let COURS_ERROR_CERTIFICATE_ALREADY_ISSUED_TEXT = "A certificate has already been issued at your address" | |
39 | 39 | ||
40 | 40 | @Callable(i) | |
41 | 41 | func issueNFT (address) = { | |
42 | 42 | let key = ("history_" + address) | |
43 | 43 | if ((tryGetString(key) == "")) | |
44 | 44 | then $Tuple2([StringEntry(("history_" + address), "true"), Issue(COURS_CERTIFICATE_TILE_TEXT, getCoursCertificateDescription(address), 1, 0, false)], unit) | |
45 | 45 | else throw(COURS_ERROR_CERTIFICATE_ALREADY_ISSUED_TEXT) | |
46 | 46 | } | |
47 | 47 | ||
48 | 48 | ||
49 | + | @Verifier(tx) | |
50 | + | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
51 | + |
github/deemru/w8io/6500d08 26.75 ms ◑