tx · BsCrNyVKeMHgGDJcaeAF4GMprBkgQ72cvqucJ1g9ftAC

3MrQ4g9YCsAN2Wr4QUXiWAPhNPv7DGdQNWb:  -0.00500000 Waves

2023.03.16 22:57 [2493028] smart account 3MrQ4g9YCsAN2Wr4QUXiWAPhNPv7DGdQNWb > SELF 0.00000000 Waves

{ "type": 13, "id": "BsCrNyVKeMHgGDJcaeAF4GMprBkgQ72cvqucJ1g9ftAC", "fee": 500000, "feeAssetId": null, "timestamp": 1678996672583, "version": 2, "chainId": 84, "sender": "3MrQ4g9YCsAN2Wr4QUXiWAPhNPv7DGdQNWb", "senderPublicKey": "2VQGRNRWyFAZvjDtkgZwdZcTwZvBJJ61n8zJfYYxm5eK", "proofs": [ "3ZksZ9hJjo4kvK4yf5XFMtsFYN2wqK4yMCB8u3TbLxQoHcQDkohnWL9SYdcW7benkNEFh2ZaA6ePfvvM7GBr8VNu" ], "script": "base64:BgJCCAISBAoCGBgSBQoDCBgYEgQKAggIEgQKAggIEgQKAggIEgUKAwgICBIDCgECEgUKAwgICBIECgIICBIGCgQIAQEBCgAOY29sbGVjdGlvbk5hbWUJARFAZXh0ck5hdGl2ZSgxMDU4KQECDmNvbGxlY3Rpb25OYW1lAAZzeW1ib2wJARFAZXh0ck5hdGl2ZSgxMDU4KQECBnN5bWJvbAALZGVzY3JpcHRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQECC2Rlc2NyaXB0aW9uAAt0b3RhbEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTUpAQILdG90YWxBbW91bnQACGRBcHBKc29uCQEHQWRkcmVzcwEJANkEAQIjM01yR2FaVlJoa25FR2ZISjE5dHRVUE5uRFJvRnFjSGhWTjcADHRva2VuUGF5bWVudAkBB0FkZHJlc3MBCQERQGV4dHJOYXRpdmUoMTA1NykBAgx0b2tlblBheW1lbnQBDG9ubHlJbnRlcm5hbAEGY2FsbGVyAwkAAAIFBmNhbGxlcgUEdGhpcwUEdW5pdAkAAgECEk9ubHkgaW50ZXJuYWwgY2FsbAENdHJhbnNmZXJPck5vdAICdG8HYXNzZXRJZAMJAAACBQJ0bwUEdGhpcwkBC1N0cmluZ0VudHJ5AgIO0LrQvtGB0YLRi9C70YwCDtC60L7RgdGC0YvQu9GMCQEOU2NyaXB0VHJhbnNmZXIDBQJ0bwABBQdhc3NldElkAQ5wYXJzZUlkdG9Bc3NldAEHYXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUHYXNzZXRJZAIcQ2FuJ3QgZmluZCBhc3NldCBieSBhc3NldCBpZAEPY2hlY2tBc3NldE93bmVyAgZjYWxsZXIHYXNzZXRJZAMJAAACCQDwBwIFBmNhbGxlcgkA2QQBBQdhc3NldElkAAEFBHVuaXQJAAIBAhBPbmx5IGFzc2V0IG93bmVyCgFpARBtYWtlSlNPTkludGVybmFsAgdhcnJLZXlzCWFyclZhbHVlcwkBC3ZhbHVlT3JFbHNlAgkBDG9ubHlJbnRlcm5hbAEIBQFpBmNhbGxlcgQDcmVzCQD8BwQFCGRBcHBKc29uAghtYWtlSlNPTgkAzAgCBQdhcnJLZXlzCQDMCAIFCWFyclZhbHVlcwUDbmlsBQNuaWwDCQAAAgUDcmVzBQNyZXMJAJQKAgUDbmlsBQNyZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERYWRkVG9KU09OSW50ZXJuYWwDBGpzb24HYXJyS2V5cwlhcnJWYWx1ZXMJAQt2YWx1ZU9yRWxzZQIJAQxvbmx5SW50ZXJuYWwBCAUBaQZjYWxsZXIEA3JlcwkA/AcEBQhkQXBwSnNvbgIJYWRkVG9KU09OCQDMCAIFBGpzb24JAMwIAgUHYXJyS2V5cwkAzAgCBQlhcnJWYWx1ZXMFA25pbAUDbmlsAwkAAAIFA3JlcwUDcmVzCQCUCgIFA25pbAUDcmVzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFXJlYWRCeUpTT05LZXlJbnRlcm5hbAIEanNvbgNrZXkJAQt2YWx1ZU9yRWxzZQIJAQxvbmx5SW50ZXJuYWwBCAUBaQZjYWxsZXIEA3JlcwkA/AcEBQhkQXBwSnNvbgINcmVhZEJ5SlNPTktleQkAzAgCBQRqc29uCQDMCAIFA2tleQUDbmlsBQNuaWwDCQAAAgUDcmVzBQNyZXMJAJQKAgUDbmlsBQNyZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEXZGVsZXRlQnlKU09OS2V5SW50ZXJuYWwCBGpzb24Da2V5CQELdmFsdWVPckVsc2UCCQEMb25seUludGVybmFsAQgFAWkGY2FsbGVyBANyZXMJAPwHBAUIZEFwcEpzb24CD2RlbGV0ZUJ5SlNPTktleQkAzAgCBQRqc29uCQDMCAIFA2tleQUDbmlsBQNuaWwDCQAAAgUDcmVzBQNyZXMJAJQKAgUDbmlsBQNyZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETc3RvcmFnZUpzb25JbnRlcm5hbAIHanNvbktleQpqc29uU3RyaW5nCQELdmFsdWVPckVsc2UCCQEMb25seUludGVybmFsAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2pzb25LZXkFCmpzb25TdHJpbmcFA25pbAFpAQdzZXRVc2VyAwdhc3NldElkBHVzZXIHZXhwaXJlcwQDcmVzCQD8BwQFCGRBcHBKc29uAghtYWtlSlNPTgkAzAgCCQDMCAICBHVzZXIJAMwIAgIHZXhwaXJlcwUDbmlsCQDMCAIJAMwIAgUEdXNlcgkAzAgCBQdleHBpcmVzBQNuaWwFA25pbAUDbmlsAwkAAAIFA3JlcwUDcmVzCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgd1c2VyT2YtBQdhc3NldElkCgABQAUDcmVzAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwUDbmlsBQNyZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPc2V0VG9rZW5QYXltZW50AQdhc3NldElkCQELdmFsdWVPckVsc2UCCQEMb25seUludGVybmFsAQgFAWkGY2FsbGVyCQDMCAIJAQtCaW5hcnlFbnRyeQICDHRva2VuUGF5bWVudAUHYXNzZXRJZAUDbmlsAWkBBGluaXQDDmNvbGxlY3Rpb25OYW1lBnN5bWJvbAtkZXNjcmlwdGlvbgkBC3ZhbHVlT3JFbHNlAgkBDG9ubHlJbnRlcm5hbAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCAg5jb2xsZWN0aW9uTmFtZQUOY29sbGVjdGlvbk5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgIGc3ltYm9sBQZzeW1ib2wJAMwIAgkBC1N0cmluZ0VudHJ5AgILZGVzY3JpcHRpb24FC2Rlc2NyaXB0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgt0b3RhbEFtb3VudAAABQNuaWwBaQEEbWludAICdG8IdG9rZW5VUkkJAQt2YWx1ZU9yRWxzZQIJAQxvbmx5SW50ZXJuYWwBCAUBaQZjYWxsZXIEB3Rva2VuSWQJAGQCBQt0b3RhbEFtb3VudAABBAdwcmVOYW1lCQCsAgIJAKwCAgUGc3ltYm9sAgEjCQCkAwEFB3Rva2VuSWQEBG5hbWUDCQBnAgAQCQCxAgEFB3ByZU5hbWUFB3ByZU5hbWUJAKQDAQUHdG9rZW5JZAQFYXNzZXQJAMMIBwUEbmFtZQkArAICCQCsAgICBnt1cmk6IgUIdG9rZW5VUkkCAiJ9AAEAAAcFBHVuaXQFBmhlaWdodAQHYXNzZXRJZAkAuAgBBQVhc3NldAQJdG9BZGRyZXNzCQEHQWRkcmVzcwEJANkEAQUCdG8ECHRyYW5zZmVyCQENdHJhbnNmZXJPck5vdAIFCXRvQWRkcmVzcwUHYXNzZXRJZAMJAAACBQh0cmFuc2ZlcgUIdHJhbnNmZXIJAMwIAgUFYXNzZXQJAMwIAgUIdHJhbnNmZXIJAMwIAgkBDEludGVnZXJFbnRyeQICC3RvdGFsQW1vdW50BQd0b2tlbklkCQDMCAIJAQtTdHJpbmdFbnRyeQIFBG5hbWUFCHRva2VuVVJJBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIaW5pdExlbmQEB2Fzc2V0SWQPdGltZVVuaXRTZWNvbmRzDXRpbWVVbml0UHJpY2UNdGltZVVuaXRDb3VudAkBC3ZhbHVlT3JFbHNlAgkBD2NoZWNrQXNzZXRPd25lcgIIBQFpBmNhbGxlcgUHYXNzZXRJZAQFYXNzZXQJAQ5wYXJzZUlkdG9Bc3NldAEFB2Fzc2V0SWQECHRva2VuVXJpCAUFYXNzZXQLZGVzY3JpcHRpb24EBWxlbmRzCQERQGV4dHJOYXRpdmUoMTA1OCkBAgVMZW5kcwQEcmVzMQkA/AcEBQhkQXBwSnNvbgINcmVhZEJ5SlNPTktleQkAzAgCBQVsZW5kcwkAzAgCAgVjb3VudAUDbmlsBQNuaWwEBmxlbmRJZAkAZAIJAQ1wYXJzZUludFZhbHVlAQoAAUAFBHJlczEDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAAEEBHJlczIJAPwHBAUIZEFwcEpzb24CCG1ha2VKU09OCQDMCAIJAMwIAgISc3VwcG9ydGVkSW50ZXJmYWNlCQDMCAICCGFzc2V0ZElkCQDMCAICCHRva2VuVXJpCQDMCAICBW93bmVyCQDMCAICD3RpbWVVbml0U2Vjb25kcwkAzAgCAg10aW1lVW5pdFByaWNlCQDMCAICDXRpbWVVbml0Q291bnQJAMwIAgIOc3RhcnRUaW1lc3RhbXAJAMwIAgIMZW5kVGltZXN0YW1wCQDMCAICB2RlcG9zaXQJAMwIAgIHY2xhaW1lZAkAzAgCAgVyZW50cwUDbmlsCQDMCAIJAMwIAgAACQDMCAIFB2Fzc2V0SWQJAMwIAgUIdG9rZW5VcmkJAMwIAggFAWkGY2FsbGVyCQDMCAIFD3RpbWVVbml0U2Vjb25kcwkAzAgCBQ10aW1lVW5pdFByaWNlCQDMCAIFDXRpbWVVbml0Q291bnQJAMwIAggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBoAgUPdGltZVVuaXRTZWNvbmRzBQ10aW1lVW5pdENvdW50CQDMCAIAAAkAzAgCBwkAzAgCAg17ImNvdW50IjoiMCJ9BQNuaWwFA25pbAUDbmlsAwkAAAIFBHJlczIFBHJlczIJAMwIAgkBC1N0cmluZ0VudHJ5AgIFTGVuZHMKAAFABQRyZXMyAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAOLBJvU=", "height": 2493028, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Hc5NxFAYykVAm27kKY7w7DS2j7HxHbS1vmksieSEwRUH Next: eRhpXC1HR3iWSD4wiDgDYADB4ytQ2WHGmfswn29dGJz Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let collectionName = getStringValue(this, "collectionName")
4+let collectionName = getStringValue("collectionName")
55
6-let symbol = getStringValue(this, "symbol")
6+let symbol = getStringValue("symbol")
77
8-let description = getStringValue(this, "description")
8+let description = getStringValue("description")
99
10-let totalAmount = getIntegerValue(this, "totalAmount")
10+let totalAmount = getIntegerValue("totalAmount")
1111
1212 let dAppJson = Address(fromBase58String("3MrGaZVRhknEGfHJ19ttUPNnDRoFqcHhVN7"))
1313
14-let tokenPayment = Address(getBinaryValue(this, "tokenPayment"))
14+let tokenPayment = Address(getBinaryValue("tokenPayment"))
1515
1616 func onlyInternal (caller) = if ((caller == this))
1717 then unit
2121 func transferOrNot (to,assetId) = if ((to == this))
2222 then StringEntry("костыль", "костыль")
2323 else ScriptTransfer(to, 1, assetId)
24+
25+
26+func parseIdtoAsset (assetId) = valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "Can't find asset by asset id")
27+
28+
29+func checkAssetOwner (caller,assetId) = if ((assetBalance(caller, fromBase58String(assetId)) == 1))
30+ then unit
31+ else throw("Only asset owner")
2432
2533
2634 @Callable(i)
3442
3543
3644 @Callable(i)
37-func addToJSONInternal (arrKeys,arrValues) = valueOrElse(onlyInternal(i.caller), {
38- let res = invoke(dAppJson, "addToJSON", [arrKeys, arrValues], nil)
45+func addToJSONInternal (json,arrKeys,arrValues) = valueOrElse(onlyInternal(i.caller), {
46+ let res = invoke(dAppJson, "addToJSON", [json, arrKeys, arrValues], nil)
3947 if ((res == res))
4048 then $Tuple2(nil, res)
4149 else throw("Strict value is not equal to itself.")
4452
4553
4654 @Callable(i)
47-func readByJSONKeyInternal (key) = valueOrElse(onlyInternal(i.caller), {
48- let res = invoke(dAppJson, "readByJSONKey", [key], nil)
55+func readByJSONKeyInternal (json,key) = valueOrElse(onlyInternal(i.caller), {
56+ let res = invoke(dAppJson, "readByJSONKey", [json, key], nil)
4957 if ((res == res))
5058 then $Tuple2(nil, res)
5159 else throw("Strict value is not equal to itself.")
5462
5563
5664 @Callable(i)
57-func deleteByJSONKeyInternal (key) = valueOrElse(onlyInternal(i.caller), {
58- let res = invoke(dAppJson, "deleteByJSONKey", [key], nil)
65+func deleteByJSONKeyInternal (json,key) = valueOrElse(onlyInternal(i.caller), {
66+ let res = invoke(dAppJson, "deleteByJSONKey", [json, key], nil)
5967 if ((res == res))
6068 then $Tuple2(nil, res)
6169 else throw("Strict value is not equal to itself.")
6977
7078
7179 @Callable(i)
72-func setUser (assetId,user,expires) = valueOrElse(onlyInternal(i.caller), {
80+func setUser (assetId,user,expires) = {
7381 let res = invoke(dAppJson, "makeJSON", [["user", "expires"], [user, expires]], nil)
7482 if ((res == res))
7583 then $Tuple2([StringEntry(("userOf-" + assetId), {
7987 else throw(($getType(@) + " couldn't be cast to String"))
8088 })], res)
8189 else throw("Strict value is not equal to itself.")
82- })
90+ }
8391
8492
8593
110118 })
111119
112120
121+
122+@Callable(i)
123+func initLend (assetId,timeUnitSeconds,timeUnitPrice,timeUnitCount) = valueOrElse(checkAssetOwner(i.caller, assetId), {
124+ let asset = parseIdtoAsset(assetId)
125+ let tokenUri = asset.description
126+ let lends = getStringValue("Lends")
127+ let res1 = invoke(dAppJson, "readByJSONKey", [lends, "count"], nil)
128+ let lendId = (parseIntValue({
129+ let @ = res1
130+ if ($isInstanceOf(@, "String"))
131+ then @
132+ else throw(($getType(@) + " couldn't be cast to String"))
133+ }) + 1)
134+ let res2 = invoke(dAppJson, "makeJSON", [["supportedInterface", "assetdId", "tokenUri", "owner", "timeUnitSeconds", "timeUnitPrice", "timeUnitCount", "startTimestamp", "endTimestamp", "deposit", "claimed", "rents"], [0, assetId, tokenUri, i.caller, timeUnitSeconds, timeUnitPrice, timeUnitCount, lastBlock.timestamp, (lastBlock.timestamp + (timeUnitSeconds * timeUnitCount)), 0, false, "{\"count\":\"0\"}"]], nil)
135+ if ((res2 == res2))
136+ then [StringEntry("Lends", {
137+ let @ = res2
138+ if ($isInstanceOf(@, "String"))
139+ then @
140+ else throw(($getType(@) + " couldn't be cast to String"))
141+ })]
142+ else throw("Strict value is not equal to itself.")
143+ })
144+
145+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let collectionName = getStringValue(this, "collectionName")
4+let collectionName = getStringValue("collectionName")
55
6-let symbol = getStringValue(this, "symbol")
6+let symbol = getStringValue("symbol")
77
8-let description = getStringValue(this, "description")
8+let description = getStringValue("description")
99
10-let totalAmount = getIntegerValue(this, "totalAmount")
10+let totalAmount = getIntegerValue("totalAmount")
1111
1212 let dAppJson = Address(fromBase58String("3MrGaZVRhknEGfHJ19ttUPNnDRoFqcHhVN7"))
1313
14-let tokenPayment = Address(getBinaryValue(this, "tokenPayment"))
14+let tokenPayment = Address(getBinaryValue("tokenPayment"))
1515
1616 func onlyInternal (caller) = if ((caller == this))
1717 then unit
1818 else throw("Only internal call")
1919
2020
2121 func transferOrNot (to,assetId) = if ((to == this))
2222 then StringEntry("костыль", "костыль")
2323 else ScriptTransfer(to, 1, assetId)
24+
25+
26+func parseIdtoAsset (assetId) = valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "Can't find asset by asset id")
27+
28+
29+func checkAssetOwner (caller,assetId) = if ((assetBalance(caller, fromBase58String(assetId)) == 1))
30+ then unit
31+ else throw("Only asset owner")
2432
2533
2634 @Callable(i)
2735 func makeJSONInternal (arrKeys,arrValues) = valueOrElse(onlyInternal(i.caller), {
2836 let res = invoke(dAppJson, "makeJSON", [arrKeys, arrValues], nil)
2937 if ((res == res))
3038 then $Tuple2(nil, res)
3139 else throw("Strict value is not equal to itself.")
3240 })
3341
3442
3543
3644 @Callable(i)
37-func addToJSONInternal (arrKeys,arrValues) = valueOrElse(onlyInternal(i.caller), {
38- let res = invoke(dAppJson, "addToJSON", [arrKeys, arrValues], nil)
45+func addToJSONInternal (json,arrKeys,arrValues) = valueOrElse(onlyInternal(i.caller), {
46+ let res = invoke(dAppJson, "addToJSON", [json, arrKeys, arrValues], nil)
3947 if ((res == res))
4048 then $Tuple2(nil, res)
4149 else throw("Strict value is not equal to itself.")
4250 })
4351
4452
4553
4654 @Callable(i)
47-func readByJSONKeyInternal (key) = valueOrElse(onlyInternal(i.caller), {
48- let res = invoke(dAppJson, "readByJSONKey", [key], nil)
55+func readByJSONKeyInternal (json,key) = valueOrElse(onlyInternal(i.caller), {
56+ let res = invoke(dAppJson, "readByJSONKey", [json, key], nil)
4957 if ((res == res))
5058 then $Tuple2(nil, res)
5159 else throw("Strict value is not equal to itself.")
5260 })
5361
5462
5563
5664 @Callable(i)
57-func deleteByJSONKeyInternal (key) = valueOrElse(onlyInternal(i.caller), {
58- let res = invoke(dAppJson, "deleteByJSONKey", [key], nil)
65+func deleteByJSONKeyInternal (json,key) = valueOrElse(onlyInternal(i.caller), {
66+ let res = invoke(dAppJson, "deleteByJSONKey", [json, key], nil)
5967 if ((res == res))
6068 then $Tuple2(nil, res)
6169 else throw("Strict value is not equal to itself.")
6270 })
6371
6472
6573
6674 @Callable(i)
6775 func storageJsonInternal (jsonKey,jsonString) = valueOrElse(onlyInternal(i.caller), [StringEntry(jsonKey, jsonString)])
6876
6977
7078
7179 @Callable(i)
72-func setUser (assetId,user,expires) = valueOrElse(onlyInternal(i.caller), {
80+func setUser (assetId,user,expires) = {
7381 let res = invoke(dAppJson, "makeJSON", [["user", "expires"], [user, expires]], nil)
7482 if ((res == res))
7583 then $Tuple2([StringEntry(("userOf-" + assetId), {
7684 let @ = res
7785 if ($isInstanceOf(@, "String"))
7886 then @
7987 else throw(($getType(@) + " couldn't be cast to String"))
8088 })], res)
8189 else throw("Strict value is not equal to itself.")
82- })
90+ }
8391
8492
8593
8694 @Callable(i)
8795 func setTokenPayment (assetId) = valueOrElse(onlyInternal(i.caller), [BinaryEntry("tokenPayment", assetId)])
8896
8997
9098
9199 @Callable(i)
92100 func init (collectionName,symbol,description) = valueOrElse(onlyInternal(i.caller), [StringEntry("collectionName", collectionName), StringEntry("symbol", symbol), StringEntry("description", description), IntegerEntry("totalAmount", 0)])
93101
94102
95103
96104 @Callable(i)
97105 func mint (to,tokenURI) = valueOrElse(onlyInternal(i.caller), {
98106 let tokenId = (totalAmount + 1)
99107 let preName = ((symbol + "#") + toString(tokenId))
100108 let name = if ((16 >= size(preName)))
101109 then preName
102110 else toString(tokenId)
103111 let asset = Issue(name, (("{uri:\"" + tokenURI) + "\"}"), 1, 0, false, unit, height)
104112 let assetId = calculateAssetId(asset)
105113 let toAddress = Address(fromBase58String(to))
106114 let transfer = transferOrNot(toAddress, assetId)
107115 if ((transfer == transfer))
108116 then [asset, transfer, IntegerEntry("totalAmount", tokenId), StringEntry(name, tokenURI)]
109117 else throw("Strict value is not equal to itself.")
110118 })
111119
112120
121+
122+@Callable(i)
123+func initLend (assetId,timeUnitSeconds,timeUnitPrice,timeUnitCount) = valueOrElse(checkAssetOwner(i.caller, assetId), {
124+ let asset = parseIdtoAsset(assetId)
125+ let tokenUri = asset.description
126+ let lends = getStringValue("Lends")
127+ let res1 = invoke(dAppJson, "readByJSONKey", [lends, "count"], nil)
128+ let lendId = (parseIntValue({
129+ let @ = res1
130+ if ($isInstanceOf(@, "String"))
131+ then @
132+ else throw(($getType(@) + " couldn't be cast to String"))
133+ }) + 1)
134+ let res2 = invoke(dAppJson, "makeJSON", [["supportedInterface", "assetdId", "tokenUri", "owner", "timeUnitSeconds", "timeUnitPrice", "timeUnitCount", "startTimestamp", "endTimestamp", "deposit", "claimed", "rents"], [0, assetId, tokenUri, i.caller, timeUnitSeconds, timeUnitPrice, timeUnitCount, lastBlock.timestamp, (lastBlock.timestamp + (timeUnitSeconds * timeUnitCount)), 0, false, "{\"count\":\"0\"}"]], nil)
135+ if ((res2 == res2))
136+ then [StringEntry("Lends", {
137+ let @ = res2
138+ if ($isInstanceOf(@, "String"))
139+ then @
140+ else throw(($getType(@) + " couldn't be cast to String"))
141+ })]
142+ else throw("Strict value is not equal to itself.")
143+ })
144+
145+

github/deemru/w8io/873ac7e 
36.10 ms