tx · 3fQX1QXWAdfNRcxGufRaDn7nGK61cq1VcyvqW2ahnuoR

3N9EXJ2Y7szbSfrxUwhWxnL3zK8wf3xosDE:  -0.01400000 Waves

2019.12.14 04:40 [807899] smart account 3N9EXJ2Y7szbSfrxUwhWxnL3zK8wf3xosDE > SELF 0.00000000 Waves

{ "type": 13, "id": "3fQX1QXWAdfNRcxGufRaDn7nGK61cq1VcyvqW2ahnuoR", "fee": 1400000, "feeAssetId": null, "timestamp": 1576287655225, "version": 1, "sender": "3N9EXJ2Y7szbSfrxUwhWxnL3zK8wf3xosDE", "senderPublicKey": "9mENuoC82QFsBookiU4McsBPyUkyY7VNWe8nikxj47eh", "proofs": [ "27DepN2HEFMexuF1cVwjigkmPMyM9oZkHorRKGuGWCvw5937WPeapQawLGdUy5C46z7Voy5KtB2p13W68bDWPNNK" ], "script": "base64:AAIDAAAAAAAAABEIARIDCgEIEgMKAQgSAwoBCAAAAAYAAAAAFGRBcHBBY2NvdW50UHVibGljS2V5AQAAACCCMi1jPXAM9h/tdjNiENORnuii7HC19AUXhMSu8uSaGgAAAAAKdXNlclN1ZmZpeAIAAAAGX191c2VyAAAAABR1bnZlcmlmaWVkVXNlclN1ZmZpeAIAAAAMX191bnZlcmlmaWVkAAAAABJ2ZXJpZmllZFVzZXJTdWZmaXgCAAAACl9fdmVyaWZpZWQBAAAABmlzVXNlcgAAAAEAAAAPY2FsbGVyUHVibGljS2V5BAAAAAd1c2VyS2V5CQABLAAAAAIFAAAAD2NhbGxlclB1YmxpY0tleQUAAAAKdXNlclN1ZmZpeAMJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAABHRoaXMFAAAAB3VzZXJLZXkGBwEAAAAKaXNWZXJpZmllZAAAAAEAAAAJcHVibGljS2V5BAAAAANrZXkJAAEsAAAAAgUAAAAJcHVibGljS2V5BQAAAAp1c2VyU3VmZml4BAAAAAd1c2VyS2V5CQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAd1c2VyS2V5BAAAAAh1c2VyRGF0YQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQkAAAIAAAABAgAAABBSZWNvcmQgbm90IGZvdW5kBAAAAAh1c2VyTGlzdAkABLUAAAACBQAAAAh1c2VyRGF0YQIAAAACX18DCQAAAAAAAAIJAAGRAAAAAgUAAAAIdXNlckxpc3QAAAAAAAAAAAECAAAACHZlcmlmaWVkBgcHAAAAAwAAAAFpAQAAAAZzaWduVXAAAAABAAAABGluZm8EAAAAD2NhbGxlclB1YmxpY0tleQkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkDCQEAAAAGaXNVc2VyAAAAAQUAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAGllvdSBhcmUgYWxyZWFkeSByZWdpc3RlcmVkBAAAAApjdXJyZW50S2V5BQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAHGN1cnJlbnRVc2VyUmVnaXN0cmF0aW9uVmFsdWUJAAEsAAAAAgUAAAAEaW5mbwUAAAAUdW52ZXJpZmllZFVzZXJTdWZmaXgJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAKY3VycmVudEtleQUAAAAKdXNlclN1ZmZpeAUAAAAcY3VycmVudFVzZXJSZWdpc3RyYXRpb25WYWx1ZQUAAAADbmlsAAAAAWkBAAAACnZlcmlmeVVzZXIAAAABAAAACXB1YmxpY0tleQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAUZEFwcEFjY291bnRQdWJsaWNLZXkJAAACAAAAAQIAAAAjT25seSBkQXBwIGFjY291bnQgY2FuIHZlcmlmeSBhIHVzZXIDCQEAAAAKaXNWZXJpZmllZAAAAAEFAAAACXB1YmxpY0tleQkAAAIAAAABAgAAACNUaGlzIHVzZXIgaGFzIGFscmVhZHkgYmVlbiB2ZXJpZmllZAMJAQAAAAZpc1VzZXIAAAABBQAAAAlwdWJsaWNLZXkEAAAACHVzZXJEYXRhBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAJcHVibGljS2V5BQAAAAp1c2VyU3VmZml4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEJAAACAAAAAQIAAAAOVXNlciBub3QgZm91bmQEAAAACHVzZXJMaXN0CQAEtQAAAAIFAAAACHVzZXJEYXRhAgAAAAJfXwQAAAAIdXNlckluZm8JAAGRAAAAAgUAAAAIdXNlckxpc3QAAAAAAAAAAAAEAAAAEHVwZGF0ZWRVc2VyVmFsdWUJAAEsAAAAAgUAAAAIdXNlckluZm8FAAAAEnZlcmlmaWVkVXNlclN1ZmZpeAQAAAAHdXNlcktleQkAASwAAAACBQAAAAlwdWJsaWNLZXkFAAAACnVzZXJTdWZmaXgJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAB3VzZXJLZXkFAAAAEHVwZGF0ZWRVc2VyVmFsdWUFAAAAA25pbAkAAAIAAAABAgAAAB1UaGlzIGlzIG5vdCBhIHJlZ2lzdGVyZWQgdXNlcgAAAAFpAQAAAAN0aXAAAAABAAAAFHB1YmxpY0tleU9mVXNlclRvVGlwAwkBAAAACmlzVmVyaWZpZWQAAAABBQAAABRwdWJsaWNLZXlPZlVzZXJUb1RpcAQAAAAHcGF5bWVudAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAAlwdWJsaWNLZXkJAAJZAAAAAQUAAAAUcHVibGljS2V5T2ZVc2VyVG9UaXADCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACFjYW4gaG9kbCB3YXZlcyBvbmx5IGF0IHRoZSBtb21lbnQDCQAAAAAAAAIFAAAACXB1YmxpY0tleQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAGllvdSBzaG91bGRuJ3QgdGlwIHlvdXJzZWxmCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAACXB1YmxpY0tleQgFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAAAR1bml0BQAAAANuaWwJAAACAAAAAQIAAAAXWW91IGNhbid0IHRpcCB0aGlzIHVzZXIAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAAXMFAAAAByRtYXRjaDAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAABRkQXBwQWNjb3VudFB1YmxpY0tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAAAAAWkFAAAAByRtYXRjaDAGAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAF0BQAAAAckbWF0Y2gwBgf1c7u1", "chainId": 84, "height": 807899, "spentComplexity": 0 } View: original | compacted Prev: 7RvXBMMHkXWZoCRxp9zsKHDrQ8NtNZiUu682ttZ8hi2p Next: 48XVExcKjyEnta9WhvfKiX5RwyyJ583gczQNW2weKXKo Diff:
OldNewDifferences
8181 let publicKey = fromBase58String(publicKeyOfUserToTip)
8282 if (isDefined(payment.assetId))
8383 then throw("can hodl waves only at the moment")
84- else TransferSet([ScriptTransfer(addressFromPublicKey(publicKey), payment.amount, unit)])
84+ else if ((publicKey == i.callerPublicKey))
85+ then throw("You shouldn't tip yourself")
86+ else TransferSet([ScriptTransfer(addressFromPublicKey(publicKey), payment.amount, unit)])
8587 }
8688 else throw("You can't tip this user")
8789
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let dAppAccountPublicKey = base58'9mENuoC82QFsBookiU4McsBPyUkyY7VNWe8nikxj47eh'
55
66 let userSuffix = "__user"
77
88 let unverifiedUserSuffix = "__unverified"
99
1010 let verifiedUserSuffix = "__verified"
1111
1212 func isUser (callerPublicKey) = {
1313 let userKey = (callerPublicKey + userSuffix)
1414 if (isDefined(getString(this, userKey)))
1515 then true
1616 else false
1717 }
1818
1919
2020 func isVerified (publicKey) = {
2121 let key = (publicKey + userSuffix)
2222 let userKey = getString(this, key)
2323 if (isDefined(userKey))
2424 then {
2525 let userData = match getString(this, key) {
2626 case a: String =>
2727 a
2828 case _ =>
2929 throw("Record not found")
3030 }
3131 let userList = split(userData, "__")
3232 if ((userList[1] == "verified"))
3333 then true
3434 else false
3535 }
3636 else false
3737 }
3838
3939
4040 @Callable(i)
4141 func signUp (info) = {
4242 let callerPublicKey = toBase58String(i.callerPublicKey)
4343 if (isUser(callerPublicKey))
4444 then throw("You are already registered")
4545 else {
4646 let currentKey = callerPublicKey
4747 let currentUserRegistrationValue = (info + unverifiedUserSuffix)
4848 WriteSet([DataEntry((currentKey + userSuffix), currentUserRegistrationValue)])
4949 }
5050 }
5151
5252
5353
5454 @Callable(i)
5555 func verifyUser (publicKey) = if ((i.callerPublicKey != dAppAccountPublicKey))
5656 then throw("Only dApp account can verify a user")
5757 else if (isVerified(publicKey))
5858 then throw("This user has already been verified")
5959 else if (isUser(publicKey))
6060 then {
6161 let userData = match getString(this, (publicKey + userSuffix)) {
6262 case a: String =>
6363 a
6464 case _ =>
6565 throw("User not found")
6666 }
6767 let userList = split(userData, "__")
6868 let userInfo = userList[0]
6969 let updatedUserValue = (userInfo + verifiedUserSuffix)
7070 let userKey = (publicKey + userSuffix)
7171 WriteSet([DataEntry(userKey, updatedUserValue)])
7272 }
7373 else throw("This is not a registered user")
7474
7575
7676
7777 @Callable(i)
7878 func tip (publicKeyOfUserToTip) = if (isVerified(publicKeyOfUserToTip))
7979 then {
8080 let payment = extract(i.payment)
8181 let publicKey = fromBase58String(publicKeyOfUserToTip)
8282 if (isDefined(payment.assetId))
8383 then throw("can hodl waves only at the moment")
84- else TransferSet([ScriptTransfer(addressFromPublicKey(publicKey), payment.amount, unit)])
84+ else if ((publicKey == i.callerPublicKey))
85+ then throw("You shouldn't tip yourself")
86+ else TransferSet([ScriptTransfer(addressFromPublicKey(publicKey), payment.amount, unit)])
8587 }
8688 else throw("You can't tip this user")
8789
8890
8991 @Verifier(tx)
9092 func verify () = match tx {
9193 case s: SetScriptTransaction =>
9294 sigVerify(tx.bodyBytes, tx.proofs[0], dAppAccountPublicKey)
9395 case i: InvokeScriptTransaction =>
9496 true
9597 case t: TransferTransaction =>
9698 true
9799 case _ =>
98100 false
99101 }
100102

github/deemru/w8io/3ef1775 
54.74 ms