tx · 8osuQYpZNKAMJGgbCULjAqTb692jAtAfNCBAQgnq34H7

3N1ytAUyhtig9X6F2hHHs1jbzYxr47Yp8Fr:  -0.00600000 Waves

2024.10.14 10:16 [3326193] smart account 3N1ytAUyhtig9X6F2hHHs1jbzYxr47Yp8Fr > SELF 0.00000000 Waves

{ "type": 13, "id": "8osuQYpZNKAMJGgbCULjAqTb692jAtAfNCBAQgnq34H7", "fee": 600000, "feeAssetId": null, "timestamp": 1728890182206, "version": 2, "chainId": 84, "sender": "3N1ytAUyhtig9X6F2hHHs1jbzYxr47Yp8Fr", "senderPublicKey": "jXCTQV8PjX2uC9UHBFveupYy9cjhY7stHbzE9cptymw", "proofs": [ "vG5trUTQXdVYnb2HcDfr3qx5u2ywdSv51DW6nWfBN4zQLpdaXT8HHMJspjgh5RdjR4LJyuDug9w3LsivFHVGJsv" ], "script": "base64:BwIZCAISAwoBCBIECgICGBIECgICGBIECgICGCYACXNlcGFyYXRvcgICX18AC3dhdmVzU3RyaW5nAgVXQVZFUwAQY29udHJhY3RGaWxlbmFtZQIXbWVtZV9pbV9jYWxjdWxhdG9yLnJpZGUABW11bHQ4AIDC1y8BB3dyYXBFcnIBAXMJAKwCAgkArAICBRBjb250cmFjdEZpbGVuYW1lAgI6IAUBcwEIdGhyb3dFcnIBAXMJAAIBCQEHd3JhcEVycgEFAXMBD3ZhbGlkYXRlQWRkcmVzcwEHYWRkcmVzcwkBCWlzRGVmaW5lZAEJAKYIAQUHYWRkcmVzcwAMU1RBVFVTX0VNUFRZAAAADFNUQVRVU19SRUFEWQABAAlrU2h1dGRvd24CDnNodXRkb3duX19mbGFnAAtrUHJpY2VBc3NldAIMcHJpY2VfX2Fzc2V0AA5rTGlzdGluZ1ZvbHVtZQIPbGlzdGluZ19fdm9sdW1lAAxrQ3JlYXRpb25GZWUCEnNldHVwX19jcmVhdGlvbkZlZQAMa0N1cnZlVGFyZ2V0AhJzZXR1cF9fY3VydmVUYXJnZXQAEWtWaXJ0dWFsTGlxdWlkaXR5AhdzZXR1cF9fdmlydHVhbExpcXVpZGl0eQATa1Bvb2xDb250cmFjdFNjcmlwdAIWcG9vbF9fY29udHJhY3RfX3NjcmlwdAATa0xhc3RFbXB0eVBvb2xJbmRleAIXbGFzdF9fZW1wdHlfcG9vbF9faW5kZXgAFGtGaXJzdEVtcHR5UG9vbEluZGV4AhlmaXJzdF9fZW1wdHlfX3Bvb2xfX2luZGV4ARVrUG9vbEFkZHJlc3NGcm9tSW5kZXgBBWluZGV4CQC5CQIJAMwIAgIEcG9vbAkAzAgCCQCkAwEFBWluZGV4BQNuaWwFCXNlcGFyYXRvcgEVa1Bvb2xJbmRleEZyb21BZGRyZXNzAQdhZGRyZXNzCQC5CQIJAMwIAgIEcG9vbAkAzAgCCQClCAEFB2FkZHJlc3MFA25pbAUJc2VwYXJhdG9yAQprUG9vbEFzc2V0AQdhZGRyZXNzCQC5CQIJAMwIAgIFYXNzZXQJAMwIAgkApQgBBQdhZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgELa1Bvb2xTdGF0dXMBBWluZGV4CQC5CQIJAMwIAgIEcG9vbAkAzAgCAgZzdGF0dXMJAMwIAgkApAMBBQVpbmRleAUDbmlsBQlzZXBhcmF0b3IAD2tGYWN0b3J5QWRkcmVzcwIQZmFjdG9yeV9fYWRkcmVzcwAUZmFjdG9yeUFkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwUPa0ZhY3RvcnlBZGRyZXNzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAOZmFjdG9yeUFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUUZmFjdG9yeUFkZHJlc3NPcHRpb24JAQd3cmFwRXJyAQIXaW52YWxpZCBmYWN0b3J5IGFkZHJlc3MACHNodXRkb3duCQELdmFsdWVPckVsc2UCCQCbCAIFDmZhY3RvcnlBZGRyZXNzBQlrU2h1dGRvd24HAA5sYXN0RW1wdHlJbmRleAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwUTa0xhc3RFbXB0eVBvb2xJbmRleAAAAA9maXJzdEVtcHR5SW5kZXgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MFFGtGaXJzdEVtcHR5UG9vbEluZGV4AAAADWxpc3RpbmdWb2x1bWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MFDmtMaXN0aW5nVm9sdW1lAAAAC2NyZWF0aW9uRmVlCQELdmFsdWVPckVsc2UCCQCaCAIFDmZhY3RvcnlBZGRyZXNzBQxrQ3JlYXRpb25GZWUAAAAScG9vbENvbnRyYWN0U2NyaXB0CQCdCAIFDmZhY3RvcnlBZGRyZXNzBRNrUG9vbENvbnRyYWN0U2NyaXB0AQxwYXJzZUFzc2V0SWQBBWlucHV0AwkAAAIFBWlucHV0BQt3YXZlc1N0cmluZwUEdW5pdAkA2QQBBQVpbnB1dAEPYXNzZXRJZFRvU3RyaW5nAQVpbnB1dAMJAAACBQVpbnB1dAUEdW5pdAULd2F2ZXNTdHJpbmcJANgEAQkBBXZhbHVlAQUFaW5wdXQBC211c3RBZGRyZXNzAgZjYWxsZXIHYWRkcmVzcwMJAAACBQZjYWxsZXIFB2FkZHJlc3MGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAEIbXVzdFRoaXMBBmNhbGxlcgkBC211c3RBZGRyZXNzAgUGY2FsbGVyBQR0aGlzAQttdXN0RmFjdG9yeQEGY2FsbGVyCQELbXVzdEFkZHJlc3MCBQZjYWxsZXIFDmZhY3RvcnlBZGRyZXNzARNjaGVja0NvbnRyYWN0U2NyaXB0AQdhZGRyZXNzBAckbWF0Y2gwBRJwb29sQ29udHJhY3RTY3JpcHQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZzY3JpcHQFByRtYXRjaDAJAAACCQDxBwEFB2FkZHJlc3MJAPYDAQkA2QQBBQZzY3JpcHQGAQxpc1Bvb2xFeGlzdHMBC3Bvb2xBZGRyZXNzCQEJaXNEZWZpbmVkAQkAmggCBQ5mYWN0b3J5QWRkcmVzcwkBFWtQb29sSW5kZXhGcm9tQWRkcmVzcwEFC3Bvb2xBZGRyZXNzBAFpAQRpbml0ARFmYWN0b3J5QWRkcmVzc1N0cgQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEIBQFpBmNhbGxlcgMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa0ZhY3RvcnlBZGRyZXNzBRFmYWN0b3J5QWRkcmVzc1N0cgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDGFkZEVtcHR5UG9vbAIPY2FsbGVyUHVibGljS2V5BGFyZ3MEDm5ld1Bvb2xBZGRyZXNzCQCnCAEFD2NhbGxlclB1YmxpY0tleQQMbmV3UG9vbEluZGV4CQBkAgUObGFzdEVtcHR5SW5kZXgAAQQGY2hlY2tzCQDMCAIDCQEBIQEFCHNodXRkb3duBgkBCHRocm93RXJyAQIWbm90IGFsbG93ZWQgKHNodXRkb3duKQkAzAgCAwkBE2NoZWNrQ29udHJhY3RTY3JpcHQBBQ5uZXdQb29sQWRkcmVzcwYJAQh0aHJvd0VycgECGnBvb2wgc2NyaXB0IGlzIG5vdCBhbGxvd2VkCQDMCAIDCQEBIQEJAQxpc1Bvb2xFeGlzdHMBBQ5uZXdQb29sQWRkcmVzcwYJAQh0aHJvd0VycgECInBvb2wgYWRkcmVzcyBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwIMaW50ZWdlckVudHJ5CQDMCAIFE2tMYXN0RW1wdHlQb29sSW5kZXgJAMwIAgUMbmV3UG9vbEluZGV4BQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQEVa1Bvb2xBZGRyZXNzRnJvbUluZGV4AQUMbmV3UG9vbEluZGV4CQDMCAIJAKUIAQUObmV3UG9vbEFkZHJlc3MFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGludGVnZXJFbnRyeQkAzAgCCQEVa1Bvb2xJbmRleEZyb21BZGRyZXNzAQUObmV3UG9vbEFkZHJlc3MJAMwIAgUMbmV3UG9vbEluZGV4BQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgxpbnRlZ2VyRW50cnkJAMwIAgkBC2tQb29sU3RhdHVzAQUMbmV3UG9vbEluZGV4CQDMCAIFDFNUQVRVU19FTVBUWQUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmNyZWF0ZVBvb2wCD2NhbGxlclB1YmxpY0tleQRhcmdzBAptaW5QYXltZW50CQBkAgUNbGlzdGluZ1ZvbHVtZQULY3JlYXRpb25GZWUEBmNoZWNrcwkAzAgCAwkBASEBBQhzaHV0ZG93bgYJAQh0aHJvd0VycgECFm5vdCBhbGxvd2VkIChzaHV0ZG93bikJAMwIAgkBC211c3RGYWN0b3J5AQgFAWkGY2FsbGVyCQDMCAIDCQBmAgkAZQIFDmxhc3RFbXB0eUluZGV4BQ9maXJzdEVtcHR5SW5kZXgAAAYJAQh0aHJvd0VycgECGG5vIGVtcHR5IHBvb2xzIGF2YWlsYWJsZQkAzAgCAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAYJAQh0aHJvd0VycgECGnBheW1lbnQgc2hvdWxkIGJlIGluIFdBVkVTCQDMCAIDCQBnAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFCm1pblBheW1lbnQGCQEIdGhyb3dFcnIBCQCsAgICJnBheW1lbnQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gCQCkAwEFCm1pblBheW1lbnQJAMwIAgMJAQlpc0RlZmluZWQBCQCRAwIFBGFyZ3MAAAYJAQh0aHJvd0VycgECGXRva2VuTmFtZSBpcyBub3QgcHJvdmlkZWQJAMwIAgMJAQlpc0RlZmluZWQBCQCRAwIFBGFyZ3MAAQYJAQh0aHJvd0VycgECIHRva2VuRGVzY3JpcHRpb24gaXMgbm90IHByb3ZpZGVkCQDMCAIDCQEJaXNEZWZpbmVkAQkAkQMCBQRhcmdzAAIGCQEIdGhyb3dFcnIBAh10b2tlblF1YW50aXR5IGlzIG5vdCBwcm92aWRlZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAlwb29sSW5kZXgJAGQCBQ9maXJzdEVtcHR5SW5kZXgAAQQRcG9vbEFkZHJlc3NTdHJpbmcJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDmZhY3RvcnlBZGRyZXNzCQEVa1Bvb2xBZGRyZXNzRnJvbUluZGV4AQUJcG9vbEluZGV4BAtwb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQURcG9vbEFkZHJlc3NTdHJpbmcEDWNhbGxlckFkZHJlc3MJAKcIAQUPY2FsbGVyUHVibGljS2V5BApwb29sRG9tYWluCQCvAgIFEXBvb2xBZGRyZXNzU3RyaW5nAAgECXBvb2xPd25lcgkApQgBBQ1jYWxsZXJBZGRyZXNzBAl0b2tlbk5hbWUJAJEDAgUEYXJncwAABAl0b2tlbkRlc2MJAJEDAgUEYXJncwABBA10b2tlblF1YW50aXR5CQCRAwIFBGFyZ3MAAgQOaW5pdFBvb2xJbnZva2UJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDmluaXRQb29sSW52b2tlCQDMCAIFEXBvb2xBZGRyZXNzU3RyaW5nCQDMCAIJAMwIAgUKcG9vbERvbWFpbgkAzAgCBQlwb29sT3duZXIJAMwIAgUJdG9rZW5OYW1lCQDMCAIFCXRva2VuRGVzYwkAzAgCBQ10b2tlblF1YW50aXR5BQNuaWwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDbmlsAwkAAAIFDmluaXRQb29sSW52b2tlBQ5pbml0UG9vbEludm9rZQQOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwIMaW50ZWdlckVudHJ5CQDMCAIFFGtGaXJzdEVtcHR5UG9vbEluZGV4CQDMCAIFCXBvb2xJbmRleAUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwIMaW50ZWdlckVudHJ5CQDMCAIJAQtrUG9vbFN0YXR1cwEFCXBvb2xJbmRleAkAzAgCBQxTVEFUVVNfUkVBRFkFA25pbAUDbmlsBQNuaWwJAJQKAgUDbmlsBQ5mYWN0b3J5QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJub3RpZnlTdGF0dXNVcGRhdGUCD2NhbGxlclB1YmxpY0tleQRhcmdzBAtwb29sQWRkcmVzcwkApwgBBQ9jYWxsZXJQdWJsaWNLZXkEBmNoZWNrcwkAzAgCAwkBDGlzUG9vbEV4aXN0cwEFC3Bvb2xBZGRyZXNzBgkBCHRocm93RXJyAQIOcG9vbCBub3QgZm91bmQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQJcG9vbEluZGV4CQERQGV4dHJOYXRpdmUoMTA1MCkCBQ5mYWN0b3J5QWRkcmVzcwkBFWtQb29sSW5kZXhGcm9tQWRkcmVzcwEFC3Bvb2xBZGRyZXNzBAluZXdTdGF0dXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAAEDmZhY3RvcnlBY3Rpb25zCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGludGVnZXJFbnRyeQkAzAgCCQELa1Bvb2xTdGF0dXMBBQlwb29sSW5kZXgJAMwIAgUJbmV3U3RhdHVzBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUOZmFjdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ASCNDjw==", "height": 3326193, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ErZh2Cy8xigxkf5jGfEeqexNvWmNJNJKxdWptzDCJWfy Next: AXW8KrMQC5GHnNN7JWKgLSoUd4SUrXYo33Shzn1egMra Diff:
OldNewDifferences
3434
3535 let kVirtualLiquidity = "setup__virtualLiquidity"
3636
37-let kPoolContractHash = "pool__contract__hash"
37+let kPoolContractScript = "pool__contract__script"
3838
3939 let kLastEmptyPoolIndex = "last__empty_pool__index"
4040
7575
7676 let creationFee = valueOrElse(getInteger(factoryAddress, kCreationFee), 0)
7777
78-let poolContractHash = getBinary(factoryAddress, kPoolContractHash)
78+let poolContractScript = getString(factoryAddress, kPoolContractScript)
7979
8080 func parseAssetId (input) = if ((input == wavesString))
8181 then unit
9898 func mustFactory (caller) = mustAddress(caller, factoryAddress)
9999
100100
101-func checkContractHash (address) = match poolContractHash {
102- case h: ByteVector =>
103- (scriptHash(address) == h)
101+func checkContractScript (address) = match poolContractScript {
102+ case script: String =>
103+ (scriptHash(address) == blake2b256(fromBase58String(script)))
104104 case _ =>
105105 true
106106 }
125125 let newPoolIndex = (lastEmptyIndex + 1)
126126 let checks = [if (!(shutdown))
127127 then true
128- else throwErr("not allowed (shutdown)"), if (checkContractHash(newPoolAddress))
128+ else throwErr("not allowed (shutdown)"), if (checkContractScript(newPoolAddress))
129129 then true
130- else throwErr("pool script hash is not allowed"), if (!(isPoolExists(newPoolAddress)))
130+ else throwErr("pool script is not allowed"), if (!(isPoolExists(newPoolAddress)))
131131 then true
132132 else throwErr("pool address is already registered")]
133133 if ((checks == checks))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "__"
55
66 let wavesString = "WAVES"
77
88 let contractFilename = "meme_im_calculator.ride"
99
1010 let mult8 = 100000000
1111
1212 func wrapErr (s) = ((contractFilename + ": ") + s)
1313
1414
1515 func throwErr (s) = throw(wrapErr(s))
1616
1717
1818 func validateAddress (address) = isDefined(addressFromString(address))
1919
2020
2121 let STATUS_EMPTY = 0
2222
2323 let STATUS_READY = 1
2424
2525 let kShutdown = "shutdown__flag"
2626
2727 let kPriceAsset = "price__asset"
2828
2929 let kListingVolume = "listing__volume"
3030
3131 let kCreationFee = "setup__creationFee"
3232
3333 let kCurveTarget = "setup__curveTarget"
3434
3535 let kVirtualLiquidity = "setup__virtualLiquidity"
3636
37-let kPoolContractHash = "pool__contract__hash"
37+let kPoolContractScript = "pool__contract__script"
3838
3939 let kLastEmptyPoolIndex = "last__empty_pool__index"
4040
4141 let kFirstEmptyPoolIndex = "first__empty__pool__index"
4242
4343 func kPoolAddressFromIndex (index) = makeString(["pool", toString(index)], separator)
4444
4545
4646 func kPoolIndexFromAddress (address) = makeString(["pool", toString(address)], separator)
4747
4848
4949 func kPoolAsset (address) = makeString(["asset", toString(address)], separator)
5050
5151
5252 func kPoolStatus (index) = makeString(["pool", "status", toString(index)], separator)
5353
5454
5555 let kFactoryAddress = "factory__address"
5656
5757 let factoryAddressOption = match getString(this, kFactoryAddress) {
5858 case s: String =>
5959 addressFromString(s)
6060 case _: Unit =>
6161 unit
6262 case _ =>
6363 throw("Match error")
6464 }
6565
6666 let factoryAddress = valueOrErrorMessage(factoryAddressOption, wrapErr("invalid factory address"))
6767
6868 let shutdown = valueOrElse(getBoolean(factoryAddress, kShutdown), false)
6969
7070 let lastEmptyIndex = valueOrElse(getInteger(factoryAddress, kLastEmptyPoolIndex), 0)
7171
7272 let firstEmptyIndex = valueOrElse(getInteger(factoryAddress, kFirstEmptyPoolIndex), 0)
7373
7474 let listingVolume = valueOrElse(getInteger(factoryAddress, kListingVolume), 0)
7575
7676 let creationFee = valueOrElse(getInteger(factoryAddress, kCreationFee), 0)
7777
78-let poolContractHash = getBinary(factoryAddress, kPoolContractHash)
78+let poolContractScript = getString(factoryAddress, kPoolContractScript)
7979
8080 func parseAssetId (input) = if ((input == wavesString))
8181 then unit
8282 else fromBase58String(input)
8383
8484
8585 func assetIdToString (input) = if ((input == unit))
8686 then wavesString
8787 else toBase58String(value(input))
8888
8989
9090 func mustAddress (caller,address) = if ((caller == address))
9191 then true
9292 else throwErr("permission denied")
9393
9494
9595 func mustThis (caller) = mustAddress(caller, this)
9696
9797
9898 func mustFactory (caller) = mustAddress(caller, factoryAddress)
9999
100100
101-func checkContractHash (address) = match poolContractHash {
102- case h: ByteVector =>
103- (scriptHash(address) == h)
101+func checkContractScript (address) = match poolContractScript {
102+ case script: String =>
103+ (scriptHash(address) == blake2b256(fromBase58String(script)))
104104 case _ =>
105105 true
106106 }
107107
108108
109109 func isPoolExists (poolAddress) = isDefined(getInteger(factoryAddress, kPoolIndexFromAddress(poolAddress)))
110110
111111
112112 @Callable(i)
113113 func init (factoryAddressStr) = {
114114 let checkCaller = mustThis(i.caller)
115115 if ((checkCaller == checkCaller))
116116 then [StringEntry(kFactoryAddress, factoryAddressStr)]
117117 else throw("Strict value is not equal to itself.")
118118 }
119119
120120
121121
122122 @Callable(i)
123123 func addEmptyPool (callerPublicKey,args) = {
124124 let newPoolAddress = addressFromPublicKey(callerPublicKey)
125125 let newPoolIndex = (lastEmptyIndex + 1)
126126 let checks = [if (!(shutdown))
127127 then true
128- else throwErr("not allowed (shutdown)"), if (checkContractHash(newPoolAddress))
128+ else throwErr("not allowed (shutdown)"), if (checkContractScript(newPoolAddress))
129129 then true
130- else throwErr("pool script hash is not allowed"), if (!(isPoolExists(newPoolAddress)))
130+ else throwErr("pool script is not allowed"), if (!(isPoolExists(newPoolAddress)))
131131 then true
132132 else throwErr("pool address is already registered")]
133133 if ((checks == checks))
134134 then {
135135 let factoryActions = [invoke(factoryAddress, "integerEntry", [kLastEmptyPoolIndex, newPoolIndex], nil), invoke(factoryAddress, "stringEntry", [kPoolAddressFromIndex(newPoolIndex), toString(newPoolAddress)], nil), invoke(factoryAddress, "integerEntry", [kPoolIndexFromAddress(newPoolAddress), newPoolIndex], nil), invoke(factoryAddress, "integerEntry", [kPoolStatus(newPoolIndex), STATUS_EMPTY], nil)]
136136 $Tuple2(nil, factoryActions)
137137 }
138138 else throw("Strict value is not equal to itself.")
139139 }
140140
141141
142142
143143 @Callable(i)
144144 func createPool (callerPublicKey,args) = {
145145 let minPayment = (listingVolume + creationFee)
146146 let checks = [if (!(shutdown))
147147 then true
148148 else throwErr("not allowed (shutdown)"), mustFactory(i.caller), if (((lastEmptyIndex - firstEmptyIndex) > 0))
149149 then true
150150 else throwErr("no empty pools available"), if ((i.payments[0].assetId == unit))
151151 then true
152152 else throwErr("payment should be in WAVES"), if ((i.payments[0].amount >= minPayment))
153153 then true
154154 else throwErr(("payment amount should be greater than " + toString(minPayment))), if (isDefined(args[0]))
155155 then true
156156 else throwErr("tokenName is not provided"), if (isDefined(args[1]))
157157 then true
158158 else throwErr("tokenDescription is not provided"), if (isDefined(args[2]))
159159 then true
160160 else throwErr("tokenQuantity is not provided")]
161161 if ((checks == checks))
162162 then {
163163 let poolIndex = (firstEmptyIndex + 1)
164164 let poolAddressString = getStringValue(factoryAddress, kPoolAddressFromIndex(poolIndex))
165165 let poolAddress = addressFromStringValue(poolAddressString)
166166 let callerAddress = addressFromPublicKey(callerPublicKey)
167167 let poolDomain = take(poolAddressString, 8)
168168 let poolOwner = toString(callerAddress)
169169 let tokenName = args[0]
170170 let tokenDesc = args[1]
171171 let tokenQuantity = args[2]
172172 let initPoolInvoke = invoke(factoryAddress, "initPoolInvoke", [poolAddressString, [poolDomain, poolOwner, tokenName, tokenDesc, tokenQuantity]], [AttachedPayment(i.payments[0].assetId, i.payments[0].amount)])
173173 if ((initPoolInvoke == initPoolInvoke))
174174 then {
175175 let factoryActions = [invoke(factoryAddress, "integerEntry", [kFirstEmptyPoolIndex, poolIndex], nil), invoke(factoryAddress, "integerEntry", [kPoolStatus(poolIndex), STATUS_READY], nil)]
176176 $Tuple2(nil, factoryActions)
177177 }
178178 else throw("Strict value is not equal to itself.")
179179 }
180180 else throw("Strict value is not equal to itself.")
181181 }
182182
183183
184184
185185 @Callable(i)
186186 func notifyStatusUpdate (callerPublicKey,args) = {
187187 let poolAddress = addressFromPublicKey(callerPublicKey)
188188 let checks = [if (isPoolExists(poolAddress))
189189 then true
190190 else throwErr("pool not found")]
191191 if ((checks == checks))
192192 then {
193193 let poolIndex = getIntegerValue(factoryAddress, kPoolIndexFromAddress(poolAddress))
194194 let newStatus = parseIntValue(args[0])
195195 let factoryActions = [invoke(factoryAddress, "integerEntry", [kPoolStatus(poolIndex), newStatus], nil)]
196196 $Tuple2(nil, factoryActions)
197197 }
198198 else throw("Strict value is not equal to itself.")
199199 }
200200
201201

github/deemru/w8io/c3f4982 
26.38 ms