tx · EdkcqczTY55Z3NkJXzVdw8oDXGSRz7sE6dMy2sS4Ru6X

3N83XrAB86aQRNiNHYsU2JKcNsv1qe1G2iU:  -0.01000000 Waves

2020.06.10 15:14 [1037309] smart account 3N83XrAB86aQRNiNHYsU2JKcNsv1qe1G2iU > SELF 0.00000000 Waves

{ "type": 13, "id": "EdkcqczTY55Z3NkJXzVdw8oDXGSRz7sE6dMy2sS4Ru6X", "fee": 1000000, "feeAssetId": null, "timestamp": 1591791296383, "version": 1, "sender": "3N83XrAB86aQRNiNHYsU2JKcNsv1qe1G2iU", "senderPublicKey": "384a9KeP93ha3vn5yDFdkJ4NMoGCcBKBa8tMTfSqWHGn", "proofs": [ "4DYqHiVNxJcWF8vUzatQ51qE4u9WG9A4SVUpUuxLvxvBMZeznM51zJ4iEmdhoePFbJwWarNmfMQS4UHzGtuupaCJ" ], "script": "base64:AAIDAAAAAAAAAAkIARIDCgEIEgAAAAAgAAAAAAthZGRyZXNzQm9vawkBAAAAB0FkZHJlc3MAAAABAQAAABoBVFaB1Hk0Ezu+4mjGjtAsjfi5cnbAV28B3gAAAAATd2hpdGVsaXN0QWRkcmVzc0tleQIAAAAQd2hpdGVsaXN0QWRkcmVzcwAAAAAXZEFwcFdoaXRlbGlzdEFkZHJlc3NLZXkCAAAAFGRBcHBXaGl0ZWxpc3RBZGRyZXNzAAAAAA5jb2VmZmljaWVudEtleQIAAAALY29lZmZpY2llbnQAAAAAEGlzc3VlckFkZHJlc3NLZXkCAAAABmlzc3VlcgAAAAAUaXNzdWVyQWRkcmVzc1BhaWRLZXkCAAAAC2lzc3Vlcl9wYWlkAAAAABppc3N1ZXJBZGRyZXNzUGFpZEFtb3VudEtleQIAAAARaXNzdWVyX3BhaWRBbW91bnQAAAAAEnRyYW5zZmVyc05lZWRlZEtleQIAAAAQdHJhbnNmZXJzX25lZWRlZAAAAAAVdHJhbnNmZXJzQ29tcGxldGVkS2V5AgAAABN0cmFuc2ZlcnNfY29tcGxldGVkAAAAABBkaXZpZGVuZHNBc3NldElkAQAAACCvOUhH768SCeA6PrRTnXQmq/k9bwVLiF0VD6knNWeEWAAAAAAVZGl2aWRlbmRzQXNzZXRJc1dhdmVzBwAAAAAbc2VjdXJpdHlBc3NldERlY2ltYWxzT2Zmc2V0AAAAAAAF9eEAAAAAAAlzdGFydFRpbWUAAAAAAF7gzogAAAAAB2VuZFRpbWUAAAAAAGDCAggAAAAAA3ZlcgIAAAAFNS4wLjEAAAAACnZhbGlkU3RhdGUAAAAAAAAAA+gAAAAADmdldEN1cnJlbnRUaW1lCQAAaQAAAAIIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAAAAAAAAAAPoAQAAAApoYXNTdGFydGVkAAAAAAkAAGcAAAACBQAAAA5nZXRDdXJyZW50VGltZQUAAAAJc3RhcnRUaW1lAQAAAAhoYXNFbmRlZAAAAAAJAABmAAAAAgUAAAAOZ2V0Q3VycmVudFRpbWUFAAAAB2VuZFRpbWUBAAAAEmdldEFkZHJlc3NGcm9tQm9vawAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAAC2FkZHJlc3NCb29rBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAAWEJAAACAAAAAQIAAAAGbm8ga2V5AQAAAAlnZXRBbW91bnQAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAEAAAAGaXNQYWlkAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBwEAAAAVZ2V0QXNzZXRJZEZvclRyYW5zZmVyAAAAAgAAAAdpc1dhdmVzAAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAB2lzV2F2ZXMHBQAAAAdhc3NldElkBQAAAAR1bml0AQAAABpnZXRBc3NldEJhbGFuY2VGb3JUcmFuc2ZlcgAAAAIAAAAHaXNXYXZlcwAAAAdhc3NldElkAwkAAAAAAAACBQAAAAdpc1dhdmVzBwkAA+sAAAACBQAAAAR0aGlzBQAAAAdhc3NldElkCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAEdGhpcwEAAAAfZ2V0SW52ZXN0b3JBZGRyZXNzRm9yV2l0aGRyYXdhbAAAAAIAAAAKYXJnQWRkcmVzcwAAAA1jYWxsZXJBZGRyZXNzAwkAAGYAAAACCQABMQAAAAEFAAAACmFyZ0FkZHJlc3MAAAAAAAAAAAoFAAAACmFyZ0FkZHJlc3MFAAAADWNhbGxlckFkZHJlc3MAAAAAEHdoaXRlbGlzdEFkZHJlc3MJAQAAABJnZXRBZGRyZXNzRnJvbUJvb2sAAAABBQAAABN3aGl0ZWxpc3RBZGRyZXNzS2V5AAAAABRkQXBwV2hpdGVsaXN0QWRkcmVzcwkBAAAAEmdldEFkZHJlc3NGcm9tQm9vawAAAAEFAAAAF2RBcHBXaGl0ZWxpc3RBZGRyZXNzS2V5AAAAABtkaXZpZGVuZHNBc3NldElkRm9yVHJhbnNmZXIJAQAAABVnZXRBc3NldElkRm9yVHJhbnNmZXIAAAACBQAAABVkaXZpZGVuZHNBc3NldElzV2F2ZXMFAAAAEGRpdmlkZW5kc0Fzc2V0SWQAAAAAEWlzc3VlckFkZHJlc3NQYWlkCQEAAAAGaXNQYWlkAAAAAQUAAAAUaXNzdWVyQWRkcmVzc1BhaWRLZXkAAAAAB2JhbGFuY2UJAQAAABpnZXRBc3NldEJhbGFuY2VGb3JUcmFuc2ZlcgAAAAIFAAAAFWRpdmlkZW5kc0Fzc2V0SXNXYXZlcwUAAAAQZGl2aWRlbmRzQXNzZXRJZAAAAAAPdHJhbnNmZXJzTmVlZGVkCQEAAAAJZ2V0QW1vdW50AAAAAQUAAAASdHJhbnNmZXJzTmVlZGVkS2V5AAAAABJ0cmFuc2ZlcnNDb21wbGV0ZWQJAQAAAAlnZXRBbW91bnQAAAABBQAAABV0cmFuc2ZlcnNDb21wbGV0ZWRLZXkAAAACAAAAAWkBAAAACndpdGhkcmF3YWwAAAABAAAAB2FkZHJlc3MEAAAACmRBcHBTdGF0dXMEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAUZEFwcFdoaXRlbGlzdEFkZHJlc3MJAAQlAAAAAQUAAAAEdGhpcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAApjdXJyZW50S2V5CQEAAAAfZ2V0SW52ZXN0b3JBZGRyZXNzRm9yV2l0aGRyYXdhbAAAAAIFAAAAB2FkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABFjdXJyZW50S2V5QWRkcmVzcwkBAAAAB2V4dHJhY3QAAAABCQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABBQAAAApjdXJyZW50S2V5BAAAABBhZGRyZXNzVG9rZW5zS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAACmN1cnJlbnRLZXkCAAAAB190b2tlbnMEAAAADmFkZHJlc3NQYWlkS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAACmN1cnJlbnRLZXkCAAAABV9wYWlkBAAAABRhZGRyZXNzUGFpZEFtb3VudEtleQkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAApjdXJyZW50S2V5AgAAAAtfcGFpZEFtb3VudAQAAAAVYWRkcmVzc1NlY3VyaXR5VG9rZW5zCQEAAAAJZ2V0QW1vdW50AAAAAQUAAAAQYWRkcmVzc1Rva2Vuc0tleQQAAAALYWRkcmVzc1BhaWQJAQAAAAZpc1BhaWQAAAABBQAAAA5hZGRyZXNzUGFpZEtleQMJAQAAAAIhPQAAAAIFAAAACmRBcHBTdGF0dXMAAAAAAAAAAAEJAAACAAAAAQIAAAAXIzAwMSBkQXBwIGlzIG5vdCBhY3RpdmUDCQEAAAABIQAAAAEJAQAAAApoYXNTdGFydGVkAAAAAAkAAAIAAAABAgAAAB0jMDAyIGRBcHAgaGFzIG5vdCBzdGFydGVkIHlldAMJAQAAAAhoYXNFbmRlZAAAAAAJAAACAAAAAQIAAAAbIzAwMyBkQXBwIGFscmVhZHkgY29tcGxldGVkAwkAAAAAAAACBQAAABVhZGRyZXNzU2VjdXJpdHlUb2tlbnMAAAAAAAAAAAAJAAACAAAAAQIAAAA1IzAwNSBUaGlzIGFjY291bnQgZG9lcyBub3QgaGF2ZSBkaXZpZGVuZHMgdG8gcmVjaWV2ZS4DCQAAAAAAAAIFAAAAC2FkZHJlc3NQYWlkBgkAAAIAAAABAgAAADEjMDA2IFRoaXMgYWNjb3VudCBoYXMgYWxyZWFkeSByZWNlaXZlZCBkaXZpZGVuZHMuBAAAAAtjb2VmZmljaWVudAkBAAAACWdldEFtb3VudAAAAAEFAAAADmNvZWZmaWNpZW50S2V5BAAAAAZhbW91bnQJAABrAAAAAwUAAAAVYWRkcmVzc1NlY3VyaXR5VG9rZW5zBQAAAAtjb2VmZmljaWVudAUAAAAbc2VjdXJpdHlBc3NldERlY2ltYWxzT2Zmc2V0CQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAOYWRkcmVzc1BhaWRLZXkGCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABV0cmFuc2ZlcnNDb21wbGV0ZWRLZXkJAABkAAAAAgUAAAASdHJhbnNmZXJzQ29tcGxldGVkAAAAAAAAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABRhZGRyZXNzUGFpZEFtb3VudEtleQUAAAAGYW1vdW50BQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARY3VycmVudEtleUFkZHJlc3MFAAAABmFtb3VudAUAAAAbZGl2aWRlbmRzQXNzZXRJZEZvclRyYW5zZmVyBQAAAANuaWwAAAABaQEAAAAKZ2V0QmFsYW5jZQAAAAAEAAAACmRBcHBTdGF0dXMEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAUZEFwcFdoaXRlbGlzdEFkZHJlc3MJAAQlAAAAAQUAAAAEdGhpcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAA1pc3N1ZXJBZGRyZXNzBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAEGlzc3VlckFkZHJlc3NLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAAWEJAAACAAAAAQIAAAAVbm8gaXNzdWVyIGFkZHJlc3Mga2V5AwkBAAAAAiE9AAAAAgUAAAAKZEFwcFN0YXR1cwAAAAAAAAAAAQkAAAIAAAABAgAAABcjMDAxIGRBcHAgaXMgbm90IGFjdGl2ZQMJAQAAAAEhAAAAAQkBAAAACmhhc1N0YXJ0ZWQAAAAACQAAAgAAAAECAAAAHSMwMDIgZEFwcCBoYXMgbm90IHN0YXJ0ZWQgeWV0AwMJAQAAAAIhPQAAAAIFAAAAD3RyYW5zZmVyc05lZWRlZAUAAAASdHJhbnNmZXJzQ29tcGxldGVkBgkAAAAAAAACBQAAAA90cmFuc2ZlcnNOZWVkZWQAAAAAAAAAAAAJAAACAAAAAQIAAAAkIzAxMCBUaGlzIGFjY291bnQgd2FpdHMgZm9yIHRyYW5zZmVyAwkAAAAAAAACBQAAAAdiYWxhbmNlAAAAAAAAAAAACQAAAgAAAAECAAAAGiMwMTEgVGhpcyBhY2NvdW50IGlzIGVtcHR5AwkAAAAAAAACBQAAABFpc3N1ZXJBZGRyZXNzUGFpZAYJAAACAAAAAQIAAAAuIzAxMiBUaGlzIGFjY291bnQgaGFzIGFscmVhZHkgcmVjZWl2ZWQgYmFsYW5jZQkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAFGlzc3VlckFkZHJlc3NQYWlkS2V5BgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAaaXNzdWVyQWRkcmVzc1BhaWRBbW91bnRLZXkFAAAAB2JhbGFuY2UFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA1pc3N1ZXJBZGRyZXNzBQAAAAdiYWxhbmNlBQAAABtkaXZpZGVuZHNBc3NldElkRm9yVHJhbnNmZXIFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgQAAAACdHgFAAAAByRtYXRjaDAEAAAABHR4SWQJAAJYAAAAAQgFAAAAAnR4AAAAAmlkBAAAAAlwQWRkcmVzczEJAQAAABJnZXRBZGRyZXNzRnJvbUJvb2sAAAABAgAAAAlwQWRkcmVzczEEAAAACXBBZGRyZXNzMgkBAAAAEmdldEFkZHJlc3NGcm9tQm9vawAAAAECAAAACXBBZGRyZXNzMgQAAAAJcEFkZHJlc3MzCQEAAAASZ2V0QWRkcmVzc0Zyb21Cb29rAAAAAQIAAAAJcEFkZHJlc3MzBAAAAAlwQWRkcmVzczQJAQAAABJnZXRBZGRyZXNzRnJvbUJvb2sAAAABAgAAAAlwQWRkcmVzczQEAAAACXBBZGRyZXNzNQkBAAAAEmdldEFkZHJlc3NGcm9tQm9vawAAAAECAAAACXBBZGRyZXNzNQQAAAAJcEFkZHJlc3M2CQEAAAASZ2V0QWRkcmVzc0Zyb21Cb29rAAAAAQIAAAAJcEFkZHJlc3M2BAAAAAlwQWRkcmVzczcJAQAAABJnZXRBZGRyZXNzRnJvbUJvb2sAAAABAgAAAAlwQWRkcmVzczcEAAAACXBBZGRyZXNzOAkBAAAAEmdldEFkZHJlc3NGcm9tQm9vawAAAAECAAAACXBBZGRyZXNzOAQAAAALcEtleTFTaWduZWQDCQEAAAAJaXNEZWZpbmVkAAAAAQkABBoAAAACBQAAAAlwQWRkcmVzczEFAAAABHR4SWQAAAAAAAAAAAEAAAAAAAAAAAAEAAAAC3BLZXkyU2lnbmVkAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAJcEFkZHJlc3MyBQAAAAR0eElkAAAAAAAAAAABAAAAAAAAAAAABAAAAAtwS2V5M1NpZ25lZAMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAACXBBZGRyZXNzMwUAAAAEdHhJZAAAAAAAAAAAAQAAAAAAAAAAAAQAAAALcEtleTRTaWduZWQDCQEAAAAJaXNEZWZpbmVkAAAAAQkABBoAAAACBQAAAAlwQWRkcmVzczQFAAAABHR4SWQAAAAAAAAAAAEAAAAAAAAAAAAEAAAAC3BLZXk1U2lnbmVkAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAJcEFkZHJlc3M1BQAAAAR0eElkAAAAAAAAAAABAAAAAAAAAAAABAAAAAtwS2V5NlNpZ25lZAMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAACXBBZGRyZXNzNgUAAAAEdHhJZAAAAAAAAAAAAQAAAAAAAAAAAAQAAAALcEtleTdTaWduZWQDCQEAAAAJaXNEZWZpbmVkAAAAAQkABBoAAAACBQAAAAlwQWRkcmVzczcFAAAABHR4SWQAAAAAAAAAAAEAAAAAAAAAAAAEAAAAC3BLZXk4U2lnbmVkAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAJcEFkZHJlc3M4BQAAAAR0eElkAAAAAAAAAAABAAAAAAAAAAAACQAAZwAAAAIJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgUAAAALcEtleTFTaWduZWQFAAAAC3BLZXkyU2lnbmVkBQAAAAtwS2V5M1NpZ25lZAUAAAALcEtleTRTaWduZWQFAAAAC3BLZXk1U2lnbmVkBQAAAAtwS2V5NlNpZ25lZAUAAAALcEtleTdTaWduZWQFAAAAC3BLZXk4U2lnbmVkAAAAAAAAAAADAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAA9EYXRhVHJhbnNhY3Rpb24EAAAAAnR4BQAAAAckbWF0Y2gwCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQdfB88l", "chainId": 84, "height": 1037309, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let addressBook = Address(base58'3MwoVRAPfC2NKuuYJKHVAVtUFhq8MyTEfQh')
5+
6+let whitelistAddressKey = "whitelistAddress"
7+
8+let dAppWhitelistAddressKey = "dAppWhitelistAddress"
9+
10+let coefficientKey = "coefficient"
11+
12+let issuerAddressKey = "issuer"
13+
14+let issuerAddressPaidKey = "issuer_paid"
15+
16+let issuerAddressPaidAmountKey = "issuer_paidAmount"
17+
18+let transfersNeededKey = "transfers_needed"
19+
20+let transfersCompletedKey = "transfers_completed"
21+
22+let dividendsAssetId = base58'Co11Tbj83TeZCnuXrZQwv6Bs4XG2sm1vGQiQ4FLDjJWs'
23+
24+let dividendsAssetIsWaves = false
25+
26+let securityAssetDecimalsOffset = 100000000
27+
28+let startTime = 1591791240
29+
30+let endTime = 1623327240
31+
32+let ver = "5.0.1"
33+
34+let validState = 1000
35+
36+let getCurrentTime = (lastBlock.timestamp / 1000)
37+
38+func hasStarted () = (getCurrentTime >= startTime)
39+
40+
41+func hasEnded () = (getCurrentTime > endTime)
42+
43+
44+func getAddressFromBook (key) = match getString(addressBook, key) {
45+ case a: String =>
46+ Address(fromBase58String(a))
47+ case _ =>
48+ throw("no key")
49+}
50+
51+
52+func getAmount (key) = match getInteger(this, key) {
53+ case a: Int =>
54+ a
55+ case _ =>
56+ 0
57+}
58+
59+
60+func isPaid (key) = match getBoolean(this, key) {
61+ case a: Boolean =>
62+ a
63+ case _ =>
64+ false
65+}
66+
67+
68+func getAssetIdForTransfer (isWaves,assetId) = if ((isWaves == false))
69+ then assetId
70+ else unit
71+
72+
73+func getAssetBalanceForTransfer (isWaves,assetId) = if ((isWaves == false))
74+ then assetBalance(this, assetId)
75+ else wavesBalance(this)
76+
77+
78+func getInvestorAddressForWithdrawal (argAddress,callerAddress) = if ((size(argAddress) > 10))
79+ then argAddress
80+ else callerAddress
81+
82+
83+let whitelistAddress = getAddressFromBook(whitelistAddressKey)
84+
85+let dAppWhitelistAddress = getAddressFromBook(dAppWhitelistAddressKey)
86+
87+let dividendsAssetIdForTransfer = getAssetIdForTransfer(dividendsAssetIsWaves, dividendsAssetId)
88+
89+let issuerAddressPaid = isPaid(issuerAddressPaidKey)
90+
91+let balance = getAssetBalanceForTransfer(dividendsAssetIsWaves, dividendsAssetId)
92+
93+let transfersNeeded = getAmount(transfersNeededKey)
94+
95+let transfersCompleted = getAmount(transfersCompletedKey)
96+
97+@Callable(i)
98+func withdrawal (address) = {
99+ let dAppStatus = match getInteger(dAppWhitelistAddress, toString(this)) {
100+ case a: Int =>
101+ a
102+ case _ =>
103+ 0
104+ }
105+ let currentKey = getInvestorAddressForWithdrawal(address, toString(i.caller))
106+ let currentKeyAddress = extract(addressFromString(currentKey))
107+ let addressTokensKey = (("address_" + currentKey) + "_tokens")
108+ let addressPaidKey = (("address_" + currentKey) + "_paid")
109+ let addressPaidAmountKey = (("address_" + currentKey) + "_paidAmount")
110+ let addressSecurityTokens = getAmount(addressTokensKey)
111+ let addressPaid = isPaid(addressPaidKey)
112+ if ((dAppStatus != 1))
113+ then throw("#001 dApp is not active")
114+ else if (!(hasStarted()))
115+ then throw("#002 dApp has not started yet")
116+ else if (hasEnded())
117+ then throw("#003 dApp already completed")
118+ else if ((addressSecurityTokens == 0))
119+ then throw("#005 This account does not have dividends to recieve.")
120+ else if ((addressPaid == true))
121+ then throw("#006 This account has already received dividends.")
122+ else {
123+ let coefficient = getAmount(coefficientKey)
124+ let amount = fraction(addressSecurityTokens, coefficient, securityAssetDecimalsOffset)
125+ ScriptResult(WriteSet([DataEntry(addressPaidKey, true), DataEntry(transfersCompletedKey, (transfersCompleted + 1)), DataEntry(addressPaidAmountKey, amount)]), TransferSet([ScriptTransfer(currentKeyAddress, amount, dividendsAssetIdForTransfer)]))
126+ }
127+ }
128+
129+
130+
131+@Callable(i)
132+func getBalance () = {
133+ let dAppStatus = match getInteger(dAppWhitelistAddress, toString(this)) {
134+ case a: Int =>
135+ a
136+ case _ =>
137+ 0
138+ }
139+ let issuerAddress = match getString(this, issuerAddressKey) {
140+ case a: String =>
141+ Address(fromBase58String(a))
142+ case _ =>
143+ throw("no issuer address key")
144+ }
145+ if ((dAppStatus != 1))
146+ then throw("#001 dApp is not active")
147+ else if (!(hasStarted()))
148+ then throw("#002 dApp has not started yet")
149+ else if (if ((transfersNeeded != transfersCompleted))
150+ then true
151+ else (transfersNeeded == 0))
152+ then throw("#010 This account waits for transfer")
153+ else if ((balance == 0))
154+ then throw("#011 This account is empty")
155+ else if ((issuerAddressPaid == true))
156+ then throw("#012 This account has already received balance")
157+ else ScriptResult(WriteSet([DataEntry(issuerAddressPaidKey, true), DataEntry(issuerAddressPaidAmountKey, balance)]), TransferSet([ScriptTransfer(issuerAddress, balance, dividendsAssetIdForTransfer)]))
158+ }
159+
160+
161+@Verifier(tx)
162+func verify () = match tx {
163+ case tx: SetScriptTransaction =>
164+ let txId = toBase58String(tx.id)
165+ let pAddress1 = getAddressFromBook("pAddress1")
166+ let pAddress2 = getAddressFromBook("pAddress2")
167+ let pAddress3 = getAddressFromBook("pAddress3")
168+ let pAddress4 = getAddressFromBook("pAddress4")
169+ let pAddress5 = getAddressFromBook("pAddress5")
170+ let pAddress6 = getAddressFromBook("pAddress6")
171+ let pAddress7 = getAddressFromBook("pAddress7")
172+ let pAddress8 = getAddressFromBook("pAddress8")
173+ let pKey1Signed = if (isDefined(getInteger(pAddress1, txId)))
174+ then 1
175+ else 0
176+ let pKey2Signed = if (isDefined(getInteger(pAddress2, txId)))
177+ then 1
178+ else 0
179+ let pKey3Signed = if (isDefined(getInteger(pAddress3, txId)))
180+ then 1
181+ else 0
182+ let pKey4Signed = if (isDefined(getInteger(pAddress4, txId)))
183+ then 1
184+ else 0
185+ let pKey5Signed = if (isDefined(getInteger(pAddress5, txId)))
186+ then 1
187+ else 0
188+ let pKey6Signed = if (isDefined(getInteger(pAddress6, txId)))
189+ then 1
190+ else 0
191+ let pKey7Signed = if (isDefined(getInteger(pAddress7, txId)))
192+ then 1
193+ else 0
194+ let pKey8Signed = if (isDefined(getInteger(pAddress8, txId)))
195+ then 1
196+ else 0
197+ ((((((((pKey1Signed + pKey2Signed) + pKey3Signed) + pKey4Signed) + pKey5Signed) + pKey6Signed) + pKey7Signed) + pKey8Signed) >= 3)
198+ case tx: DataTransaction =>
199+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
200+ case _ =>
201+ false
202+}
203+

github/deemru/w8io/873ac7e 
17.79 ms