tx · Ai1pVMWpA4zLf3oPUNrxKw27AJhDYGcd4xd2PNe8wV5S

3MzcHAM4DcpYKt1ZAMibQmqU69pKQ6qz3i4:  -0.00300000 Waves

2023.03.24 22:06 [2504495] smart account 3MzcHAM4DcpYKt1ZAMibQmqU69pKQ6qz3i4 > SELF 0.00000000 Waves

{ "type": 13, "id": "Ai1pVMWpA4zLf3oPUNrxKw27AJhDYGcd4xd2PNe8wV5S", "fee": 300000, "feeAssetId": null, "timestamp": 1679684866473, "version": 2, "chainId": 84, "sender": "3MzcHAM4DcpYKt1ZAMibQmqU69pKQ6qz3i4", "senderPublicKey": "DoAid1WtwHRuonKq6xKkbxijk1QQhXG75vdyuUM7n7NN", "proofs": [ "5VjfRBmAiBRghygC4jJWAz31CkXEoBPJHNtU54w9er4fSMcmPFPusUEPXWcdRs8gM41kZAygTLYhpenMs2qTPu7F" ], "script": "base64:BgIQCAISBAoCCAgSBAoCCAgSAAwABmFkbWluMQIsQmd4cENtNHd4Ylc4U0tMUEtabmY0S1UyRDZaVTI5b3Y4TWdacmthU0FxcFkABmFkbWluMgIAABZrZXlfZmFybU5mdF9uZXh0TnVtYmVyAhJmYXJtTmZ0X25leHROdW1iZXIADGZhcm1OZnRfbmFtZQILQ2F0dGxlIE5GVCAAC2Nvd05mdF9uYW1lAgdDb3cgTkZUABNmYXJtTmZ0X2Rlc2NyaXB0aW9uAjd7ImRlc2NyaXB0aW9uIjogIk5GVCBmb3IgYXNzb3RpYXRlZCBjYXR0bGUiLCAiaW1hZ2UiOiAiAARsaXZlAgZBQ1RJVkUABGRlYWQCCElOQUNUSVZFAAZmYXR0ZW4CBkZBVFRFTgENdHJ5R2V0SW50ZWdlcgEDa2V5BAckbWF0Y2gwCQCaCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEMdHJ5R2V0U3RyaW5nAQNrZXkEByRtYXRjaDAJAJ0IAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIAAQVhbGxvdwEJY2FsbGVyUGJrAwMJAAACBQljYWxsZXJQYmsFBmFkbWluMQYJAAACBQljYWxsZXJQYmsFBmFkbWluMgYHAwFpAQxyZWdpc3RlckZhcm0CB2FkZHJlc3MGcGFyYW1zBAljYWxsZXJQYmsJANgEAQgFAWkPY2FsbGVyUHVibGljS2V5AwkBBWFsbG93AQUJY2FsbGVyUGJrBAlyZWNpcGllbnQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MEBXBfYXJyCQC8CQIFBnBhcmFtcwIBfAQLJHQwMTU0MDE2MTIJAJUKAwkAkQMCBQVwX2FycgAACQCRAwIFBXBfYXJyAAEJAJEDAgUFcF9hcnIAAgQIZmFybU5hbWUIBQskdDAxNTQwMTYxMgJfMQQMZmFybUxvY2F0aW9uCAULJHQwMTU0MDE2MTICXzIECWltYWdlTGluawgFCyR0MDE1NDAxNjEyAl8zBAduZXh0TnVtCQENdHJ5R2V0SW50ZWdlcgEFFmtleV9mYXJtTmZ0X25leHROdW1iZXIDCQAAAgUHbmV4dE51bQUHbmV4dE51bQQFaXNzdWUJAMIIBQkArAICBQxmYXJtTmZ0X25hbWUJAKQDAQUHbmV4dE51bQkArAICCQCsAgIFE2Zhcm1OZnRfZGVzY3JpcHRpb24FCWltYWdlTGluawICIn0AAQAABwQCaWQJALgIAQUFaXNzdWUJAJQKAgkAzAgCBQVpc3N1ZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQlyZWNpcGllbnQAAQUCaWQJAMwIAgkBDEludGVnZXJFbnRyeQIFFmtleV9mYXJtTmZ0X25leHROdW1iZXIJAGQCBQduZXh0TnVtAAEJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgkArAICAgVmYXJtXwUHYWRkcmVzcwIHX3N0YXR1cwYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBWZhcm1fBQdhZGRyZXNzAgVfbmFtZQUIZmFybU5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBWZhcm1fBQdhZGRyZXNzAglfbG9jYXRpb24FDGZhcm1Mb2NhdGlvbgUDbmlsCQCWCgQFB25leHROdW0FCGZhcm1OYW1lBQxmYXJtTG9jYXRpb24FCWltYWdlTGluawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECEk5vdCBhbGxvd2VkIGNhbGxlcgFpAQtyZWdpc3RlckNvdwIHYWRkcmVzcwZwYXJhbXMECWNhbGxlclBiawkA2AQBCAUBaQ9jYWxsZXJQdWJsaWNLZXkDCQEFYWxsb3cBBQljYWxsZXJQYmsECXJlY2lwaWVudAkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwQFcF9hcnIJALwJAgUGcGFyYW1zBQZwYXJhbXMECyR0MDI3NDMyODkyCQCZCgcJAJEDAgUFcF9hcnIAAAkAkQMCBQVwX2FycgABCQCRAwIFBXBfYXJyAAIJAJEDAgUFcF9hcnIAAwkAkQMCBQVwX2FycgAECQCRAwIFBXBfYXJyAAUJAJEDAgUFcF9hcnIABgQHY293Q29kZQgFCyR0MDI3NDMyODkyAl8xBBFib3JuZWRGYXJtQWRkcmVzcwgFCyR0MDI3NDMyODkyAl8yBAVnZW5lcwgFCyR0MDI3NDMyODkyAl8zBAhtb3RoZXJJZAgFCyR0MDI3NDMyODkyAl80BAhmYXRoZXJJZAgFCyR0MDI3NDMyODkyAl81BAR0eXBlCAULJHQwMjc0MzI4OTICXzYECWltYWdlTGluawgFCyR0MDI3NDMyODkyAl83BAtkZXNjcmlwdGlvbgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDXsiY293Q29kZSI6ICIFB2Nvd0NvZGUCGSIsICJib3JuZWRGYXJtQWRkcmVzcyI6ICIFEWJvcm5lZEZhcm1BZGRyZXNzAg0iLCAiZ2VuZXMiOiAiBQVnZW5lcwIQIiwgIm1vdGhlcklkIjogIgUIbW90aGVySWQCECIsICJmYXRoZXJJZCI6ICIFCGZhdGhlcklkAgwiLCAidHlwZSI6ICIFBHR5cGUCESIsICJpbWFnZUxpbmsiOiAiBQlpbWFnZUxpbmsCASIEBWlzc3VlCQDCCAUFC2Nvd05mdF9uYW1lCQCsAgIJAKwCAgULZGVzY3JpcHRpb24FCWltYWdlTGluawICIn0AAQAABwQCaWQJALgIAQUFaXNzdWUJAMwIAgUFaXNzdWUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUJcmVjaXBpZW50AAEFAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIFZmFybV8FB2FkZHJlc3MCBV9jb3dfCQDYBAEFAmlkAgdfc3RhdHVzBQRsaXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgRjb3dfCQDYBAEFAmlkAgZfb3duZXIFB2FkZHJlc3MFA25pbAkAAgECEk5vdCBhbGxvd2VkIGNhbGxlcgFpAQRpbml0AAQJY2FsbGVyUGJrCQDYBAEIBQFpD2NhbGxlclB1YmxpY0tleQMJAQVhbGxvdwEFCWNhbGxlclBiawQHbmV4dE51bQkBDXRyeUdldEludGVnZXIBAhZrZXlfZmFybU5mdF9uZXh0TnVtYmVyAwkBAiE9AgUHbmV4dE51bQAACQACAQIfQ29udHJhY3QgaXMgYWxyZWFkeSBpbml0aWFsaXplZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUWa2V5X2Zhcm1OZnRfbmV4dE51bWJlcgABBQNuaWwJAAIBAhJOb3QgYWxsb3dlZCBjYWxsZXIAR3c84A==", "height": 2504495, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 657u2mC66WZkMJwboiPn8qx1jSuBpgLgTb99aRMsGcsU Next: 55XzZ3cHasUTGynTP6GzynVodsv93xCBiGZ58xaVVn1b Diff:
OldNewDifferences
3535 }
3636
3737
38-func allow (callerPbk) = true
38+func allow (callerPbk) = if (if ((callerPbk == admin1))
39+ then true
40+ else (callerPbk == admin2))
41+ then true
42+ else false
3943
4044
4145 @Callable(i)
9296 func init () = {
9397 let callerPbk = toBase58String(i.callerPublicKey)
9498 if (allow(callerPbk))
95- then [IntegerEntry(key_farmNft_nextNumber, 1)]
99+ then {
100+ let nextNum = tryGetInteger("key_farmNft_nextNumber")
101+ if ((nextNum != 0))
102+ then throw("Contract is already initialized")
103+ else [IntegerEntry(key_farmNft_nextNumber, 1)]
104+ }
96105 else throw("Not allowed caller")
97106 }
98107
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let admin1 = "BgxpCm4wxbW8SKLPKZnf4KU2D6ZU29ov8MgZrkaSAqpY"
55
66 let admin2 = ""
77
88 let key_farmNft_nextNumber = "farmNft_nextNumber"
99
1010 let farmNft_name = "Cattle NFT "
1111
1212 let cowNft_name = "Cow NFT"
1313
1414 let farmNft_description = "{\"description\": \"NFT for assotiated cattle\", \"image\": \""
1515
1616 let live = "ACTIVE"
1717
1818 let dead = "INACTIVE"
1919
2020 let fatten = "FATTEN"
2121
2222 func tryGetInteger (key) = match getInteger(this, key) {
2323 case b: Int =>
2424 b
2525 case _ =>
2626 0
2727 }
2828
2929
3030 func tryGetString (key) = match getString(this, key) {
3131 case a: String =>
3232 a
3333 case _ =>
3434 ""
3535 }
3636
3737
38-func allow (callerPbk) = true
38+func allow (callerPbk) = if (if ((callerPbk == admin1))
39+ then true
40+ else (callerPbk == admin2))
41+ then true
42+ else false
3943
4044
4145 @Callable(i)
4246 func registerFarm (address,params) = {
4347 let callerPbk = toBase58String(i.callerPublicKey)
4448 if (allow(callerPbk))
4549 then {
4650 let recipient = addressFromStringValue(address)
4751 let p_arr = split_4C(params, "|")
4852 let $t015401612 = $Tuple3(p_arr[0], p_arr[1], p_arr[2])
4953 let farmName = $t015401612._1
5054 let farmLocation = $t015401612._2
5155 let imageLink = $t015401612._3
5256 let nextNum = tryGetInteger(key_farmNft_nextNumber)
5357 if ((nextNum == nextNum))
5458 then {
5559 let issue = Issue((farmNft_name + toString(nextNum)), ((farmNft_description + imageLink) + "\"}"), 1, 0, false)
5660 let id = calculateAssetId(issue)
5761 $Tuple2([issue, ScriptTransfer(recipient, 1, id), IntegerEntry(key_farmNft_nextNumber, (nextNum + 1)), BooleanEntry((("farm_" + address) + "_status"), true), StringEntry((("farm_" + address) + "_name"), farmName), StringEntry((("farm_" + address) + "_location"), farmLocation)], $Tuple4(nextNum, farmName, farmLocation, imageLink))
5862 }
5963 else throw("Strict value is not equal to itself.")
6064 }
6165 else throw("Not allowed caller")
6266 }
6367
6468
6569
6670 @Callable(i)
6771 func registerCow (address,params) = {
6872 let callerPbk = toBase58String(i.callerPublicKey)
6973 if (allow(callerPbk))
7074 then {
7175 let recipient = addressFromStringValue(address)
7276 let p_arr = split_4C(params, params)
7377 let $t027432892 = $Tuple7(p_arr[0], p_arr[1], p_arr[2], p_arr[3], p_arr[4], p_arr[5], p_arr[6])
7478 let cowCode = $t027432892._1
7579 let bornedFarmAddress = $t027432892._2
7680 let genes = $t027432892._3
7781 let motherId = $t027432892._4
7882 let fatherId = $t027432892._5
7983 let type = $t027432892._6
8084 let imageLink = $t027432892._7
8185 let description = (((((((((((((("{\"cowCode\": \"" + cowCode) + "\", \"bornedFarmAddress\": \"") + bornedFarmAddress) + "\", \"genes\": \"") + genes) + "\", \"motherId\": \"") + motherId) + "\", \"fatherId\": \"") + fatherId) + "\", \"type\": \"") + type) + "\", \"imageLink\": \"") + imageLink) + "\"")
8286 let issue = Issue(cowNft_name, ((description + imageLink) + "\"}"), 1, 0, false)
8387 let id = calculateAssetId(issue)
8488 [issue, ScriptTransfer(recipient, 1, id), StringEntry((((("farm_" + address) + "_cow_") + toBase58String(id)) + "_status"), live), StringEntry((("cow_" + toBase58String(id)) + "_owner"), address)]
8589 }
8690 else throw("Not allowed caller")
8791 }
8892
8993
9094
9195 @Callable(i)
9296 func init () = {
9397 let callerPbk = toBase58String(i.callerPublicKey)
9498 if (allow(callerPbk))
95- then [IntegerEntry(key_farmNft_nextNumber, 1)]
99+ then {
100+ let nextNum = tryGetInteger("key_farmNft_nextNumber")
101+ if ((nextNum != 0))
102+ then throw("Contract is already initialized")
103+ else [IntegerEntry(key_farmNft_nextNumber, 1)]
104+ }
96105 else throw("Not allowed caller")
97106 }
98107
99108

github/deemru/w8io/873ac7e 
67.45 ms