tx · 5TpwqYSbWw3yrqV8taWPud8oKtC3j97perB4hoVJHTCt

3MvqnYLwBErxGtKzeEjgWgr2RXgniokicR2:  -0.01400000 Waves

2020.11.20 00:56 [1272805] smart account 3MvqnYLwBErxGtKzeEjgWgr2RXgniokicR2 > SELF 0.00000000 Waves

{ "type": 13, "id": "5TpwqYSbWw3yrqV8taWPud8oKtC3j97perB4hoVJHTCt", "fee": 1400000, "feeAssetId": null, "timestamp": 1605822996980, "version": 2, "chainId": 84, "sender": "3MvqnYLwBErxGtKzeEjgWgr2RXgniokicR2", "senderPublicKey": "3dxKqzB5AWentnFkyzLnbnRfN2iRWgE7Q4paMwfi9MoT", "proofs": [ "2XZNpnDCWiV4NTRZajyrNWJjPdoDhw14tgBimpnuUSfz6RsS9frDnTmEMQ7jm4ZXizphVsSueyLwiCo6ayApYhPC" ], "script": "base64:AAIDAAAAAAAAAEYIARIDCgEIEgMKAQgSBAoCCAgSBAoCCAgSBAoCCAESAwoBCBIFCgMICAgSBQoDCAgBEgMKAQgSAwoBCBIDCgEIEgQKAggIAAAACAAAAAAGUVVPUlVNAAAAAAAAAAABAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAA3ZhbAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAUAAAADdmFsAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQQAAAADdmFsBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAgAAAAAFAAAAA3ZhbAEAAAAHaXNPd25lcgAAAAEAAAAHYWRkcmVzcwkAAAAAAAACBQAAAAdhZGRyZXNzBQAAAAR0aGlzAQAAAAhnZXRHcm91cAAAAAAEAAAAA3ZhbAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzAgAAAA13b3JraW5nX2dyb3VwAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWICAAAAAAUAAAADdmFsAQAAAApnZXRNZW1iZXJzAAAAAAQAAAADdmFsBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMCAAAAC2Rhb19tZW1iZXJzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWICAAAAAAUAAAADdmFsAQAAAA1pc0dyb3VwTWVtYmVyAAAAAQAAAAFhCQAAZgAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAAFXdvcmtpbmdfZ3JvdXBfbWVtYmVyXwkABCUAAAABBQAAAAFhAgAAAAdfd2VpZ2h0AAAAAAAAAAAAAQAAAA1jYW5NZW1iZXJWb3RlAAAAAQAAAAFpCQAAZgAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAAC2Rhb19tZW1iZXJfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgIAAAAHX3dlaWdodAAAAAAAAAAAAAAAAAwAAAABaQEAAAAMYWRkREFPTWVtYmVyAAAAAQAAAA1tZW1iZXJBZGRyZXNzAwkBAAAAASEAAAABCQEAAAAHaXNPd25lcgAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAABxhY2Nlc3Mgb25seSB0byB0aGUgREFPIG93bmVyAwkAAAAAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAtkYW9fbWVtYmVyXwUAAAANbWVtYmVyQWRkcmVzcwIAAAAHX3dlaWdodAAAAAAAAAAAAQkAAAIAAAABAgAAABhUaGlzIHVzZXIgYWxyZWFkeSBleGlzdHMEAAAABWdyb3VwCQEAAAAKZ2V0TWVtYmVycwAAAAAEAAAACG5ld0dyb3VwCQABLAAAAAIJAAEsAAAAAgUAAAAFZ3JvdXACAAAAATsFAAAADW1lbWJlckFkZHJlc3MEAAAACWdyb3VwU2l6ZQkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAAhkYW9fc2l6ZQQAAAAMbmV3R3JvdXBTaXplCQAAZAAAAAIFAAAACWdyb3VwU2l6ZQAAAAAAAAAAAQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAALZGFvX21lbWJlcnMFAAAACG5ld0dyb3VwCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAhkYW9fc2l6ZQUAAAAMbmV3R3JvdXBTaXplCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALZGFvX21lbWJlcl8FAAAADW1lbWJlckFkZHJlc3MCAAAAB193ZWlnaHQAAAAAAAAAAAEFAAAAA25pbAAAAAFpAQAAAA5hZGRHcm91cE1lbWJlcgAAAAEAAAANbWVtYmVyQWRkcmVzcwMJAQAAAAEhAAAAAQkBAAAAB2lzT3duZXIAAAABCAUAAAABaQAAAAZjYWxsZXIJAAACAAAAAQIAAAAcYWNjZXNzIG9ubHkgdG8gdGhlIERBTyBvd25lcgMJAAAAAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAVd29ya2luZ19ncm91cF9tZW1iZXJfBQAAAA1tZW1iZXJBZGRyZXNzAgAAAAdfd2VpZ2h0AAAAAAAAAAABCQAAAgAAAAECAAAAGFRoaXMgdXNlciBhbHJlYWR5IGV4aXN0cwQAAAAFZ3JvdXAJAQAAAAhnZXRHcm91cAAAAAAEAAAACG5ld0dyb3VwCQABLAAAAAIJAAEsAAAAAgUAAAAFZ3JvdXACAAAAATsFAAAADW1lbWJlckFkZHJlc3MEAAAACWdyb3VwU2l6ZQkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABJ3b3JraW5nX2dyb3VwX3NpemUEAAAADG5ld0dyb3VwU2l6ZQkAAGQAAAACBQAAAAlncm91cFNpemUAAAAAAAAAAAEJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAEndvcmtpbmdfZ3JvdXBfbmFtZQUAAAAIbmV3R3JvdXAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAEndvcmtpbmdfZ3JvdXBfc2l6ZQUAAAAMbmV3R3JvdXBTaXplCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAVd29ya2luZ19ncm91cF9tZW1iZXJfBQAAAA1tZW1iZXJBZGRyZXNzAgAAAAdfd2VpZ2h0AAAAAAAAAAABBQAAAANuaWwAAAABaQEAAAAHYWRkVGFzawAAAAIAAAAFdGl0bGUAAAAEbGluawMJAQAAAAEhAAAAAQkBAAAADWlzR3JvdXBNZW1iZXIAAAABCAUAAAABaQAAAAZjYWxsZXIJAAACAAAAAQIAAAAgZ3JhbnRzIHdvcmtpbmcgZ3JvdXAgYWNjZXNzIG9ubHkJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18JAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAIAAAAGX3RpdGxlBQAAAAV0aXRsZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkAgAAAAVfbGluawUAAAAEbGluawUAAAADbmlsAAAAAWkBAAAADmFkZFRhc2tEZXRhaWxzAAAAAgAAAAZ0YXNrSWQAAAALZGV0YWlsc0xpbmsDCQEAAAABIQAAAAEJAQAAAA1pc0dyb3VwTWVtYmVyAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAECAAAAIGdyYW50cyB3b3JraW5nIGdyb3VwIGFjY2VzcyBvbmx5BAAAAAZyZXdhcmQICQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQAAAAGYW1vdW50CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAAB19yZXdhcmQFAAAABnJld2FyZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAAhfZGV0YWlscwUAAAALZGV0YWlsc0xpbmsJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAAHX3N0YXR1cwIAAAAIcHJvcG9zZWQFAAAAA25pbAAAAAFpAQAAABN2b3RlRm9yVGFza1Byb3Bvc2FsAAAAAgAAAAZ0YXNrSWQAAAAJdm90ZVZhbHVlAwkBAAAAASEAAAABCQEAAAANY2FuTWVtYmVyVm90ZQAAAAEFAAAAAWkJAAACAAAAAQIAAAAOeW91IGNhbid0IHZvdGUDCQEAAAACIT0AAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAAB19zdGF0dXMCAAAACHByb3Bvc2VkCQAAAgAAAAECAAAAH3ZvdGluZyBpcyBjbG9zZWQgb3Igbm90IHN0YXJ0ZWQDAwkBAAAAAiE9AAAAAgUAAAAJdm90ZVZhbHVlAP//////////CQEAAAACIT0AAAACBQAAAAl2b3RlVmFsdWUAAAAAAAAAAAEHCQAAAgAAAAECAAAAGHlvdSBuZWVkIHRvIHZvdGUgMSBvciAtMQQAAAAHdm90ZUtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAAB192b3RlZF8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAxwcmV2aW91c1ZvdGUJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAAHdm90ZUtleQMJAQAAAAEhAAAAAQkAAAAAAAACBQAAAAxwcmV2aW91c1ZvdGUAAAAAAAAAAAAJAAACAAAAAQIAAAAWeW91IGhhdmUgYWxyZWFkeSB2b3RlZAQAAAAJdm90aW5nS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAADV92b3Rpbmdfc3RhdGUEAAAAC3ZvdGluZ1N0YXRlCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAACXZvdGluZ0tleQQAAAAOdm90ZXNBbW91bnRLZXkJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAAOX3ZvdGluZ19hbW91bnQEAAAAEHZvdGVzQW1vdW50U3RhdGUJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAAl2b3RpbmdLZXkAAAAAAAAAAAEEAAAADm5ld1ZvdGluZ1N0YXRlCQAAZAAAAAIFAAAAC3ZvdGluZ1N0YXRlBQAAAAl2b3RlVmFsdWUJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAl2b3RpbmdLZXkFAAAADm5ld1ZvdGluZ1N0YXRlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAd2b3RlS2V5BQAAAAl2b3RlVmFsdWUJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADnZvdGVzQW1vdW50S2V5BQAAABB2b3Rlc0Ftb3VudFN0YXRlBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAB6EgBQAAAAR1bml0BQAAAANuaWwAAAABaQEAAAAYZmluaXNoVGFza1Byb3Bvc2FsVm90aW5nAAAAAQAAAAZ0YXNrSWQDCQAAZgAAAAIFAAAABlFVT1JVTQkAAGkAAAACCQAAaAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAA5fdm90aW5nX2Ftb3VudAAAAAAAAAAAZAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAAhkYW9fc2l6ZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAKbW9yZSB0aGFuIAkAAaQAAAABBQAAAAZRVU9SVU0CAAAAMiUgbWVtYmVycyBoYXZlIHRvIHZvdGUgYmVmb3JlIGZpbmlzaGluZyB0aGUgdm90aW5nAwkBAAAAASEAAAABCQEAAAANaXNHcm91cE1lbWJlcgAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAACBncmFudHMgd29ya2luZyBncm91cCBhY2Nlc3Mgb25seQQAAAAJdm90aW5nS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAADV92b3Rpbmdfc3RhdGUEAAAAC3ZvdGluZ1N0YXRlCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAACXZvdGluZ0tleQMJAABmAAAAAgUAAAALdm90aW5nU3RhdGUAAAAAAAAAAAAEAAAADHZvdGluZ1Jlc3VsdAIAAAAOcmVhZHlfdG9fYXBwbHkJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAAHX3N0YXR1cwUAAAAMdm90aW5nUmVzdWx0BQAAAANuaWwEAAAADHZvdGluZ1Jlc3VsdAIAAAAIcmVqZWN0ZWQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAAHX3N0YXR1cwUAAAAMdm90aW5nUmVzdWx0BQAAAANuaWwAAAABaQEAAAAMYXBwbHlGb3JUYXNrAAAAAwAAAAZ0YXNrSWQAAAAIdGVhbU5hbWUAAAAEbGluawQAAAAGc3RhdHVzCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAAdfc3RhdHVzAwkBAAAAAiE9AAAAAgUAAAAGc3RhdHVzAgAAAA5yZWFkeV90b19hcHBseQkAAAIAAAABAgAAACRUaGlzIGdyYW50IGhhcyBub3QgeWV0IGJlZW4gYXBwcm92ZWQEAAAAB2xpc3RLZXkJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAALX2FwcGxpY2FudHMEAAAAFWN1cnJlbnRBcHBsaWNhbnRzTGlzdAkBAAAADHRyeUdldFN0cmluZwAAAAEFAAAAB2xpc3RLZXkEAAAADGFwcGxpY2FudEtleQkAATAAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAACgQAAAARbmV3QXBwbGljYW50c0xpc3QJAAEsAAAAAgkAASwAAAACBQAAABVjdXJyZW50QXBwbGljYW50c0xpc3QCAAAAATsJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAAVfYXBwXwUAAAAMYXBwbGljYW50S2V5AgAAAAVfbmFtZQUAAAAIdGVhbU5hbWUJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAABV9hcHBfBQAAAAxhcHBsaWNhbnRLZXkCAAAABV9saW5rBQAAAARsaW5rCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAAVfYXBwXwUAAAAMYXBwbGljYW50S2V5AgAAAAdfbGVhZGVyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAAFX2FwcF8FAAAADGFwcGxpY2FudEtleQIAAAADX2lkBQAAAAxhcHBsaWNhbnRLZXkJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAB2xpc3RLZXkFAAAAEW5ld0FwcGxpY2FudHNMaXN0BQAAAANuaWwAAAABaQEAAAAQdm90ZUZvckFwcGxpY2FudAAAAAMAAAAGdGFza0lkAAAADnRlYW1JZGVudGlmaWVyAAAACXZvdGVWYWx1ZQMJAQAAAAEhAAAAAQkBAAAADWNhbk1lbWJlclZvdGUAAAABBQAAAAFpCQAAAgAAAAECAAAADnlvdSBjYW4ndCB2b3RlBAAAAAh2b3RlSGFzaAkAASwAAAACCQABMAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAAKCQABMAAAAAIFAAAADnRlYW1JZGVudGlmaWVyAAAAAAAAAAAKBAAAAAd2b3RlS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAAGX3ZvdGVfBQAAAAh2b3RlSGFzaAQAAAAEdm90ZQkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAAd2b3RlS2V5AwkBAAAAAiE9AAAAAgUAAAAEdm90ZQAAAAAAAAAAAAkAAAIAAAABAgAAACN5b3UgaGF2ZSBhbHJlYWR5IHZvdGVkIG9uIHRoaXMgdGVhbQQAAAASdGVhbVZvdGVzQW1vdW50S2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAAVfYXBwXwUAAAAOdGVhbUlkZW50aWZpZXICAAAABl92b3RlcwQAAAAMdGVhbVNjb3JlS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAAVfYXBwXwUAAAAOdGVhbUlkZW50aWZpZXICAAAABl9zY29yZQQAAAAPdGVhbVZvdGVzQW1vdW50CQAAZAAAAAIAAAAAAAAAAAEJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAASdGVhbVZvdGVzQW1vdW50S2V5BAAAAAxuZXdUZWFtU2NvcmUJAABkAAAAAgUAAAAJdm90ZVZhbHVlCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAADHRlYW1TY29yZUtleQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAHdm90ZUtleQUAAAAJdm90ZVZhbHVlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAx0ZWFtU2NvcmVLZXkFAAAADG5ld1RlYW1TY29yZQUAAAADbmlsAAAAAWkBAAAAFmZpbmlzaEFwcGxpY2FudHNWb3RpbmcAAAABAAAABnRhc2tJZAoBAAAAFmlzQXBwbGljYW50Vm90ZWRFbm91Z2gAAAACAAAAA2FpZAAAAARhaWQyBAAAAAdsaXN0S2V5CQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAAC19hcHBsaWNhbnRzBAAAAA5hcHBsaWNhbnRzTGlzdAkABLUAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAAdsaXN0S2V5AgAAAAE7BAAAAA50ZWFtSWRlbnRpZmllcgkAAZEAAAACBQAAAA5hcHBsaWNhbnRzTGlzdAUAAAADYWlkBAAAABJ0ZWFtVm90ZXNBbW91bnRLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAABV9hcHBfBQAAAA50ZWFtSWRlbnRpZmllcgIAAAAGX3ZvdGVzBAAAAA90ZWFtVm90ZXNBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAASdGVhbVZvdGVzQW1vdW50S2V5AwkAAGYAAAACBQAAAA90ZWFtVm90ZXNBbW91bnQAAAAAAAAAAAAAAAAAAAAAAAEJAAACAAAAAQkAASwAAAACAgAAACVub3QgZW5vdWdoIHZvdGVzIHRvIG1ha2UgZGVjaXNpb24gb24gBQAAAA50ZWFtSWRlbnRpZmllcgoBAAAADGhhc01vcmVWb3RlcwAAAAIAAAADYWlkAAAABGFpZDIEAAAAB2xpc3RLZXkJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAALX2FwcGxpY2FudHMEAAAADmFwcGxpY2FudHNMaXN0CQAEtQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAB2xpc3RLZXkCAAAAATsEAAAADnRlYW1JZGVudGlmaWVyCQABkQAAAAIFAAAADmFwcGxpY2FudHNMaXN0BQAAAANhaWQEAAAAEnRlYW1Wb3Rlc0Ftb3VudEtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAAFX2FwcF8FAAAADnRlYW1JZGVudGlmaWVyAgAAAAZfdm90ZXMEAAAAD3RlYW1Wb3Rlc0Ftb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABBQAAABJ0ZWFtVm90ZXNBbW91bnRLZXkEAAAAD3RlYW0ySWRlbnRpZmllcgkAAZEAAAACBQAAAA5hcHBsaWNhbnRzTGlzdAUAAAAEYWlkMgQAAAATdGVhbTJWb3Rlc0Ftb3VudEtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAAFX2FwcF8FAAAAD3RlYW0ySWRlbnRpZmllcgIAAAAGX3ZvdGVzBAAAABB0ZWFtMlZvdGVzQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAAE3RlYW0yVm90ZXNBbW91bnRLZXkDCQAAZgAAAAIFAAAAD3RlYW1Wb3Rlc0Ftb3VudAUAAAAQdGVhbTJWb3Rlc0Ftb3VudAUAAAADYWlkBQAAAARhaWQyAwkBAAAAASEAAAABCQEAAAANaXNHcm91cE1lbWJlcgAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAACBncmFudHMgd29ya2luZyBn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", "height": 1272805, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 25pk9sPbXUGhnRhfTSbeWTuypf9KAQnPKdMi6HGtk2we Next: FFUiSeMjjF2chK26uaofxuRkrM1cjqgLbUCcFWmbkyzk Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 50
4+let a = 1
55
6-let b = base58'4zfrrwDVjbGFM8wxbZGriVLY4XJsVD4oNMp21FnDnMAa'
7-
8-func c (d) = {
9- let e = {
10- let f = getInteger(this, d)
11- if ($isInstanceOf(f, "Int"))
6+func b (c) = {
7+ let d = {
8+ let e = getInteger(this, c)
9+ if ($isInstanceOf(e, "Int"))
1210 then {
13- let g = f
14- g
11+ let f = e
12+ f
1513 }
1614 else 0
1715 }
18- e
16+ d
17+ }
18+
19+
20+func g (c) = {
21+ let d = {
22+ let e = getString(this, c)
23+ if ($isInstanceOf(e, "String"))
24+ then {
25+ let f = e
26+ f
27+ }
28+ else ""
29+ }
30+ d
1931 }
2032
2133
2335
2436
2537 func j () = {
26- let e = {
27- let f = getString(this, "working_group")
28- if ($isInstanceOf(f, "String"))
38+ let d = {
39+ let e = getString(this, "working_group")
40+ if ($isInstanceOf(e, "String"))
2941 then {
30- let g = f
31- g
42+ let f = e
43+ f
3244 }
3345 else ""
3446 }
35- e
47+ d
3648 }
3749
3850
3951 func k () = {
40- let e = {
41- let f = getString(this, "dao_members")
42- if ($isInstanceOf(f, "String"))
52+ let d = {
53+ let e = getString(this, "dao_members")
54+ if ($isInstanceOf(e, "String"))
4355 then {
44- let g = f
45- g
56+ let f = e
57+ f
4658 }
4759 else ""
4860 }
49- e
61+ d
5062 }
5163
5264
53-func l (m) = (c(("group_member_weight_" + toString(m))) > 0)
65+func l (m) = (b((("working_group_member_" + toString(m)) + "_weight")) > 0)
5466
5567
56-func n (o) = (c(("dao_member_weight_" + toString(o.caller))) > 0)
68+func n (o) = (b((("dao_member_" + toString(o.caller)) + "_weight")) > 0)
5769
5870
5971 @Callable(o)
6072 func addDAOMember (p) = if (!(h(o.caller)))
6173 then throw("access only to the DAO owner")
62- else {
63- let q = k()
64- let r = ((q + ";") + p)
65- let s = c("dao_size")
66- let t = (s + 1)
67- WriteSet([DataEntry("dao_members", r), DataEntry("dao_size", t), DataEntry(("dao_member_weight_" + p), 1)])
68- }
74+ else if ((b((("dao_member_" + p) + "_weight")) == 1))
75+ then throw("This user already exists")
76+ else {
77+ let q = k()
78+ let r = ((q + ";") + p)
79+ let s = b("dao_size")
80+ let t = (s + 1)
81+ WriteSet([DataEntry("dao_members", r), DataEntry("dao_size", t), DataEntry((("dao_member_" + p) + "_weight"), 1)])
82+ }
6983
7084
7185
7286 @Callable(o)
7387 func addGroupMember (p) = if (!(h(o.caller)))
7488 then throw("access only to the DAO owner")
89+ else if ((b((("working_group_member_" + p) + "_weight")) == 1))
90+ then throw("This user already exists")
91+ else {
92+ let q = j()
93+ let r = ((q + ";") + p)
94+ let s = b("working_group_size")
95+ let t = (s + 1)
96+ WriteSet([DataEntry("working_group_name", r), DataEntry("working_group_size", t), DataEntry((("working_group_member_" + p) + "_weight"), 1)])
97+ }
98+
99+
100+
101+@Callable(o)
102+func addTask (u,v) = if (!(l(o.caller)))
103+ then throw("grants working group access only")
104+ else WriteSet([DataEntry((("tasks_" + toBase58String(o.transactionId)) + "_title"), u), DataEntry((("tasks_" + toBase58String(o.transactionId)) + "_link"), v)])
105+
106+
107+
108+@Callable(o)
109+func addTaskDetails (w,x) = if (!(l(o.caller)))
110+ then throw("grants working group access only")
75111 else {
76- let q = j()
77- let r = ((q + ";") + p)
78- let s = c("working_group_size")
79- let t = (s + 1)
80- WriteSet([DataEntry("working_group", r), DataEntry("working_group_size", t), DataEntry(("group_member_weight_" + p), 1)])
112+ let y = extract(o.payment).amount
113+ WriteSet([DataEntry((("tasks_" + w) + "_reward"), y), DataEntry((("tasks_" + w) + "_details"), x), DataEntry((("tasks_" + w) + "_status"), "proposed")])
81114 }
82115
83116
84117
85118 @Callable(o)
86-func addTask (u) = if (!(l(o.caller)))
87- then throw("grants working group access only")
88- else WriteSet([DataEntry((toBase58String(o.transactionId) + "_task"), u)])
119+func voteForTaskProposal (w,z) = if (!(n(o)))
120+ then throw("you can't vote")
121+ else if ((getStringValue(this, (("tasks_" + w) + "_status")) != "proposed"))
122+ then throw("voting is closed or not started")
123+ else if (if ((z != -1))
124+ then (z != 1)
125+ else false)
126+ then throw("you need to vote 1 or -1")
127+ else {
128+ let A = ((("tasks_" + w) + "_voted_") + toString(o.caller))
129+ let B = b(A)
130+ if (!((B == 0)))
131+ then throw("you have already voted")
132+ else {
133+ let C = (("tasks_" + w) + "_voting_state")
134+ let D = b(C)
135+ let E = (("tasks_" + w) + "_voting_amount")
136+ let F = (b(C) + 1)
137+ let G = (D + z)
138+ ScriptResult(WriteSet([DataEntry(C, G), DataEntry(A, z), DataEntry(E, F)]), TransferSet([ScriptTransfer(o.caller, 500000, unit)]))
139+ }
140+ }
89141
90142
91143
92144 @Callable(o)
93-func rateTask (v,w) = if (!(if ((w == 1))
94- then true
95- else (w == -1)))
96- then throw("your rate needs to be +1 or -1")
145+func finishTaskProposalVoting (w) = if ((a > ((b((("tasks_" + w) + "_voting_amount")) * 100) / b("dao_size"))))
146+ then throw((("more than " + toString(a)) + "% members have to vote before finishing the voting"))
147+ else if (!(l(o.caller)))
148+ then throw("grants working group access only")
149+ else {
150+ let C = (("tasks_" + w) + "_voting_state")
151+ let D = b(C)
152+ if ((D > 0))
153+ then {
154+ let H = "ready_to_apply"
155+ WriteSet([DataEntry((("tasks_" + w) + "_status"), H)])
156+ }
157+ else {
158+ let H = "rejected"
159+ WriteSet([DataEntry((("tasks_" + w) + "_status"), H)])
160+ }
161+ }
162+
163+
164+
165+@Callable(o)
166+func applyForTask (w,I,v) = {
167+ let J = g((("tasks_" + w) + "_status"))
168+ if ((J != "ready_to_apply"))
169+ then throw("This grant has not yet been approved")
170+ else {
171+ let K = (("tasks_" + w) + "_applicants")
172+ let L = g(K)
173+ let M = drop(toString(o.caller), 10)
174+ let N = ((L + ";") + toString(o.caller))
175+ WriteSet([DataEntry((((("tasks_" + w) + "_app_") + M) + "_name"), I), DataEntry((((("tasks_" + w) + "_app_") + M) + "_link"), v), DataEntry((((("tasks_" + w) + "_app_") + M) + "_leader"), toString(o.caller)), DataEntry((((("tasks_" + w) + "_app_") + M) + "_id"), M), DataEntry(K, N)])
176+ }
177+ }
178+
179+
180+
181+@Callable(o)
182+func voteForApplicant (w,O,z) = if (!(n(o)))
183+ then throw("you can't vote")
97184 else {
98- let x = extract(o.payment)
99- if ((x.assetId != b))
100- then throw("you need to vote using WCT")
185+ let P = (drop(toString(o.caller), 10) + drop(O, 10))
186+ let A = ((("tasks_" + w) + "_vote_") + P)
187+ let Q = b(A)
188+ if ((Q != 0))
189+ then throw("you have already voted on this team")
101190 else {
102- let y = x.amount
103- let z = (w * y)
104- let A = c((v + "_community_rate"))
105- ScriptResult(WriteSet([DataEntry((v + "_community_rate"), (A + z))]), TransferSet([ScriptTransfer(o.caller, x.amount, x.assetId)]))
191+ let R = (((("tasks_" + w) + "_app_") + O) + "_votes")
192+ let S = (((("tasks_" + w) + "_app_") + O) + "_score")
193+ let T = (1 + b(R))
194+ let U = (z + b(S))
195+ WriteSet([DataEntry(A, z), DataEntry(S, U)])
106196 }
107197 }
108198
109199
110200
111201 @Callable(o)
112-func addTaskDetails (v) = if (!(l(o.caller)))
113- then throw("grants working group access only")
114- else {
115- let B = extract(o.payment).amount
116- WriteSet([DataEntry((v + "_reward"), B), DataEntry((v + "_status"), "proposed")])
202+func finishApplicantsVoting (w) = {
203+ func V (W,X) = {
204+ let K = (("tasks_" + w) + "_applicants")
205+ let Y = split(getStringValue(this, K), ";")
206+ let O = Y[W]
207+ let R = (((("tasks_" + w) + "_app_") + O) + "_votes")
208+ let T = b(R)
209+ if ((T > 0))
210+ then 1
211+ else throw(("not enough votes to make decision on " + O))
117212 }
118213
119-
120-
121-@Callable(o)
122-func voteForTaskProposal (v,C) = if (!(n(o)))
123- then throw("you can't vote")
124- else if ((getStringValue(this, (v + "_status")) != "proposed"))
125- then throw("voting is closed or not started")
126- else if (if ((C != -1))
127- then (C != 1)
128- else false)
129- then throw("you need to vote 1 or -1")
130- else {
131- let D = (((v + "_") + toString(o.caller)) + "_vote1")
132- let E = c(D)
133- if (!((E == 0)))
134- then throw("you have already voted")
135- else {
136- let F = (v + "_voting1")
137- let G = c(F)
138- let H = (v + "_voting1_amount")
139- let I = (c(F) + 1)
140- let J = (G + C)
141- ScriptResult(WriteSet([DataEntry(F, J), DataEntry(D, C), DataEntry(H, I)]), TransferSet([ScriptTransfer(o.caller, 500000, unit)]))
142- }
143- }
144-
145-
146-
147-@Callable(o)
148-func finishTaskProposalVoting (v) = if ((a > ((c((v + "_voting1_amount")) * 100) / c("dao_size"))))
149- then throw((("more than " + toString(a)) + "% members have to vote before finishing the voting"))
150- else if (!(l(o.caller)))
151- then throw("grants working group access only")
152- else {
153- let F = (v + "_voting1")
154- let G = c(F)
155- if ((G > 0))
156- then {
157- let K = "ready_to_apply"
158- WriteSet([DataEntry((v + "_status"), K)])
159- }
160- else {
161- let K = "rejected"
162- WriteSet([DataEntry((v + "_status"), K)])
163- }
164- }
165-
166-
167-
168-@Callable(o)
169-func applyForTask (v,L) = {
170- let M = (v + "_applicants")
171- let N = {
172- let f = getString(this, M)
173- if ($isInstanceOf(f, "String"))
174- then {
175- let g = f
176- g
177- }
178- else ""
179- }
180- let O = ((N + ";") + L)
181- WriteSet([DataEntry((((v + "_applicant_") + L) + "_leader"), toString(o.caller)), DataEntry(M, O)])
182- }
183-
184-
185-
186-@Callable(o)
187-func voteForApplicant (v,L,C) = if (!(n(o)))
188- then throw("you can't vote")
189- else {
190- let D = ((((v + "_") + toString(o.caller)) + "_vote_") + L)
191- let z = c(D)
192- if ((z != 0))
193- then throw("you have already voted on this team")
194- else {
195- let P = (((v + "_applicant_") + L) + "_votes")
196- let Q = (((v + "_applicant_") + L) + "_score")
197- let R = (1 + c(P))
198- let S = (C + c(Q))
199- WriteSet([DataEntry(D, C), DataEntry(Q, S)])
200- }
201- }
202-
203-
204-
205-@Callable(o)
206-func finishApplicantsVoting (v) = {
207- func T (U,V) = {
208- let M = (v + "_applicants")
209- let W = split(getStringValue(this, M), ";")
210- let L = W[U]
211- let P = (((v + "_applicant_") + L) + "_votes")
212- let R = c(P)
213- if ((R > 0))
214- then 1
215- else throw(("not enough votes to make decision on " + L))
216- }
217-
218- func X (U,V) = {
219- let M = (v + "_applicants")
220- let W = split(getStringValue(this, M), ";")
221- let L = W[U]
222- let P = (((v + "_applicant_") + L) + "_votes")
223- let R = c(P)
224- let Y = W[V]
225- let Z = (((v + "_applicant_") + Y) + "_votes")
226- let aa = c(Z)
227- if ((R > aa))
228- then U
229- else V
214+ func Z (W,X) = {
215+ let K = (("tasks_" + w) + "_applicants")
216+ let Y = split(getStringValue(this, K), ";")
217+ let O = Y[W]
218+ let R = (((("tasks_" + w) + "_app_") + O) + "_votes")
219+ let T = b(R)
220+ let aa = Y[X]
221+ let ab = (((("tasks_" + w) + "_app_") + aa) + "_votes")
222+ let ac = b(ab)
223+ if ((T > ac))
224+ then W
225+ else X
230226 }
231227
232228 if (!(l(o.caller)))
233229 then throw("grants working group access only")
234230 else {
235- let ab = {
236- let ac = [0, 1]
237- let ad = size(ac)
238- let ae = 0
239- if ((ad == 0))
240- then ae
241- else {
242- let af = X(ae, ac[0])
243- if ((ad == 1))
244- then af
231+ let ad = g((("tasks_" + w) + "_applicants"))
232+ let Y = split(ad, ";")
233+ if ((size(Y) == 0))
234+ then throw("No one has yet responded to the grant")
235+ else {
236+ let ae = {
237+ let af = [0, 1]
238+ let ag = size(af)
239+ let ah = 0
240+ if ((ag == 0))
241+ then ah
245242 else {
246- let ag = X(af, ac[1])
247- if ((ad == 2))
248- then ag
243+ let ai = Z(ah, af[0])
244+ if ((ag == 1))
245+ then ai
249246 else {
250- let ah = X(ag, ac[2])
251- throw("List size exceed 2")
247+ let aj = Z(ai, af[1])
248+ if ((ag == 2))
249+ then aj
250+ else {
251+ let ak = Z(aj, af[2])
252+ throw("List size exceed 2")
253+ }
252254 }
253255 }
254256 }
255- }
256- let M = (v + "_applicants")
257- let W = split(getStringValue(this, M), ";")
258- let L = W[ab]
259- WriteSet([DataEntry((v + "_status"), "team_chosen"), DataEntry((v + "_performer"), L), DataEntry((((v + "_applicant_") + L) + "_work_process"), "can_begin")])
257+ let O = Y[ae]
258+ WriteSet([DataEntry((("tasks_" + w) + "_status"), "team_chosen"), DataEntry((("tasks_" + w) + "_performer"), O), DataEntry((((("tasks_" + w) + "_app_") + O) + "_process"), "can_begin")])
259+ }
260260 }
261261 }
262262
263263
264264
265265 @Callable(o)
266-func startWork (v) = {
267- let L = getStringValue(this, (v + "_performer"))
268- if ((toString(o.caller) != getStringValue(this, (((v + "_applicant_") + L) + "_leader"))))
266+func startWork (w) = {
267+ let O = getStringValue(this, (("tasks_" + w) + "_performer"))
268+ if ((toString(o.caller) != getStringValue(this, (((("tasks_" + w) + "_app_") + O) + "_leader"))))
269269 then throw("team leader only")
270- else WriteSet([DataEntry((v + "_status"), "work_started"), DataEntry((((v + "_applicant_") + L) + "_work_process"), "work_started")])
270+ else WriteSet([DataEntry((("tasks_" + w) + "_status"), "work_started"), DataEntry((((("tasks_" + w) + "_app_") + O) + "_process"), "work_started")])
271271 }
272272
273273
274274
275275 @Callable(o)
276-func acceptWorkResult (v) = if (!(l(o.caller)))
276+func rejectTask (w) = if (!(l(o.caller)))
277277 then throw("grants working group access only")
278278 else {
279- let ai = c((v + "_reward"))
280- let L = getStringValue(this, (v + "_performer"))
281- let aj = getStringValue(this, (((v + "_applicant_") + L) + "_leader"))
282- ScriptResult(WriteSet([DataEntry((v + "_status"), "work_finished"), DataEntry((((v + "_applicant_") + L) + "_work_process"), "work_finished")]), TransferSet([ScriptTransfer(addressFromStringValue(aj), ai, unit)]))
279+ let O = getStringValue(this, (("tasks_" + w) + "_performer"))
280+ WriteSet([DataEntry((("tasks_" + w) + "_status"), "rejected"), DataEntry((((("tasks_" + w) + "_app_") + O) + "_process"), "rejected")])
281+ }
282+
283+
284+
285+@Callable(o)
286+func acceptWorkResult (w,al) = if (!(l(o.caller)))
287+ then throw("grants working group access only")
288+ else {
289+ let am = b((("tasks_" + w) + "_reward"))
290+ let O = getStringValue(this, (("tasks_" + w) + "_performer"))
291+ let an = getStringValue(this, (((("tasks_" + w) + "_app_") + O) + "_leader"))
292+ ScriptResult(WriteSet([DataEntry((("tasks_" + w) + "_status"), "work_finished"), DataEntry((((("tasks_" + w) + "_app_") + O) + "_process"), "work_finished"), DataEntry((((("tasks_" + w) + "_app_") + O) + "_report"), al)]), TransferSet([ScriptTransfer(addressFromStringValue(an), am, unit)]))
283293 }
284294
285295
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 50
4+let a = 1
55
6-let b = base58'4zfrrwDVjbGFM8wxbZGriVLY4XJsVD4oNMp21FnDnMAa'
7-
8-func c (d) = {
9- let e = {
10- let f = getInteger(this, d)
11- if ($isInstanceOf(f, "Int"))
6+func b (c) = {
7+ let d = {
8+ let e = getInteger(this, c)
9+ if ($isInstanceOf(e, "Int"))
1210 then {
13- let g = f
14- g
11+ let f = e
12+ f
1513 }
1614 else 0
1715 }
18- e
16+ d
17+ }
18+
19+
20+func g (c) = {
21+ let d = {
22+ let e = getString(this, c)
23+ if ($isInstanceOf(e, "String"))
24+ then {
25+ let f = e
26+ f
27+ }
28+ else ""
29+ }
30+ d
1931 }
2032
2133
2234 func h (i) = (i == this)
2335
2436
2537 func j () = {
26- let e = {
27- let f = getString(this, "working_group")
28- if ($isInstanceOf(f, "String"))
38+ let d = {
39+ let e = getString(this, "working_group")
40+ if ($isInstanceOf(e, "String"))
2941 then {
30- let g = f
31- g
42+ let f = e
43+ f
3244 }
3345 else ""
3446 }
35- e
47+ d
3648 }
3749
3850
3951 func k () = {
40- let e = {
41- let f = getString(this, "dao_members")
42- if ($isInstanceOf(f, "String"))
52+ let d = {
53+ let e = getString(this, "dao_members")
54+ if ($isInstanceOf(e, "String"))
4355 then {
44- let g = f
45- g
56+ let f = e
57+ f
4658 }
4759 else ""
4860 }
49- e
61+ d
5062 }
5163
5264
53-func l (m) = (c(("group_member_weight_" + toString(m))) > 0)
65+func l (m) = (b((("working_group_member_" + toString(m)) + "_weight")) > 0)
5466
5567
56-func n (o) = (c(("dao_member_weight_" + toString(o.caller))) > 0)
68+func n (o) = (b((("dao_member_" + toString(o.caller)) + "_weight")) > 0)
5769
5870
5971 @Callable(o)
6072 func addDAOMember (p) = if (!(h(o.caller)))
6173 then throw("access only to the DAO owner")
62- else {
63- let q = k()
64- let r = ((q + ";") + p)
65- let s = c("dao_size")
66- let t = (s + 1)
67- WriteSet([DataEntry("dao_members", r), DataEntry("dao_size", t), DataEntry(("dao_member_weight_" + p), 1)])
68- }
74+ else if ((b((("dao_member_" + p) + "_weight")) == 1))
75+ then throw("This user already exists")
76+ else {
77+ let q = k()
78+ let r = ((q + ";") + p)
79+ let s = b("dao_size")
80+ let t = (s + 1)
81+ WriteSet([DataEntry("dao_members", r), DataEntry("dao_size", t), DataEntry((("dao_member_" + p) + "_weight"), 1)])
82+ }
6983
7084
7185
7286 @Callable(o)
7387 func addGroupMember (p) = if (!(h(o.caller)))
7488 then throw("access only to the DAO owner")
89+ else if ((b((("working_group_member_" + p) + "_weight")) == 1))
90+ then throw("This user already exists")
91+ else {
92+ let q = j()
93+ let r = ((q + ";") + p)
94+ let s = b("working_group_size")
95+ let t = (s + 1)
96+ WriteSet([DataEntry("working_group_name", r), DataEntry("working_group_size", t), DataEntry((("working_group_member_" + p) + "_weight"), 1)])
97+ }
98+
99+
100+
101+@Callable(o)
102+func addTask (u,v) = if (!(l(o.caller)))
103+ then throw("grants working group access only")
104+ else WriteSet([DataEntry((("tasks_" + toBase58String(o.transactionId)) + "_title"), u), DataEntry((("tasks_" + toBase58String(o.transactionId)) + "_link"), v)])
105+
106+
107+
108+@Callable(o)
109+func addTaskDetails (w,x) = if (!(l(o.caller)))
110+ then throw("grants working group access only")
75111 else {
76- let q = j()
77- let r = ((q + ";") + p)
78- let s = c("working_group_size")
79- let t = (s + 1)
80- WriteSet([DataEntry("working_group", r), DataEntry("working_group_size", t), DataEntry(("group_member_weight_" + p), 1)])
112+ let y = extract(o.payment).amount
113+ WriteSet([DataEntry((("tasks_" + w) + "_reward"), y), DataEntry((("tasks_" + w) + "_details"), x), DataEntry((("tasks_" + w) + "_status"), "proposed")])
81114 }
82115
83116
84117
85118 @Callable(o)
86-func addTask (u) = if (!(l(o.caller)))
87- then throw("grants working group access only")
88- else WriteSet([DataEntry((toBase58String(o.transactionId) + "_task"), u)])
119+func voteForTaskProposal (w,z) = if (!(n(o)))
120+ then throw("you can't vote")
121+ else if ((getStringValue(this, (("tasks_" + w) + "_status")) != "proposed"))
122+ then throw("voting is closed or not started")
123+ else if (if ((z != -1))
124+ then (z != 1)
125+ else false)
126+ then throw("you need to vote 1 or -1")
127+ else {
128+ let A = ((("tasks_" + w) + "_voted_") + toString(o.caller))
129+ let B = b(A)
130+ if (!((B == 0)))
131+ then throw("you have already voted")
132+ else {
133+ let C = (("tasks_" + w) + "_voting_state")
134+ let D = b(C)
135+ let E = (("tasks_" + w) + "_voting_amount")
136+ let F = (b(C) + 1)
137+ let G = (D + z)
138+ ScriptResult(WriteSet([DataEntry(C, G), DataEntry(A, z), DataEntry(E, F)]), TransferSet([ScriptTransfer(o.caller, 500000, unit)]))
139+ }
140+ }
89141
90142
91143
92144 @Callable(o)
93-func rateTask (v,w) = if (!(if ((w == 1))
94- then true
95- else (w == -1)))
96- then throw("your rate needs to be +1 or -1")
145+func finishTaskProposalVoting (w) = if ((a > ((b((("tasks_" + w) + "_voting_amount")) * 100) / b("dao_size"))))
146+ then throw((("more than " + toString(a)) + "% members have to vote before finishing the voting"))
147+ else if (!(l(o.caller)))
148+ then throw("grants working group access only")
149+ else {
150+ let C = (("tasks_" + w) + "_voting_state")
151+ let D = b(C)
152+ if ((D > 0))
153+ then {
154+ let H = "ready_to_apply"
155+ WriteSet([DataEntry((("tasks_" + w) + "_status"), H)])
156+ }
157+ else {
158+ let H = "rejected"
159+ WriteSet([DataEntry((("tasks_" + w) + "_status"), H)])
160+ }
161+ }
162+
163+
164+
165+@Callable(o)
166+func applyForTask (w,I,v) = {
167+ let J = g((("tasks_" + w) + "_status"))
168+ if ((J != "ready_to_apply"))
169+ then throw("This grant has not yet been approved")
170+ else {
171+ let K = (("tasks_" + w) + "_applicants")
172+ let L = g(K)
173+ let M = drop(toString(o.caller), 10)
174+ let N = ((L + ";") + toString(o.caller))
175+ WriteSet([DataEntry((((("tasks_" + w) + "_app_") + M) + "_name"), I), DataEntry((((("tasks_" + w) + "_app_") + M) + "_link"), v), DataEntry((((("tasks_" + w) + "_app_") + M) + "_leader"), toString(o.caller)), DataEntry((((("tasks_" + w) + "_app_") + M) + "_id"), M), DataEntry(K, N)])
176+ }
177+ }
178+
179+
180+
181+@Callable(o)
182+func voteForApplicant (w,O,z) = if (!(n(o)))
183+ then throw("you can't vote")
97184 else {
98- let x = extract(o.payment)
99- if ((x.assetId != b))
100- then throw("you need to vote using WCT")
185+ let P = (drop(toString(o.caller), 10) + drop(O, 10))
186+ let A = ((("tasks_" + w) + "_vote_") + P)
187+ let Q = b(A)
188+ if ((Q != 0))
189+ then throw("you have already voted on this team")
101190 else {
102- let y = x.amount
103- let z = (w * y)
104- let A = c((v + "_community_rate"))
105- ScriptResult(WriteSet([DataEntry((v + "_community_rate"), (A + z))]), TransferSet([ScriptTransfer(o.caller, x.amount, x.assetId)]))
191+ let R = (((("tasks_" + w) + "_app_") + O) + "_votes")
192+ let S = (((("tasks_" + w) + "_app_") + O) + "_score")
193+ let T = (1 + b(R))
194+ let U = (z + b(S))
195+ WriteSet([DataEntry(A, z), DataEntry(S, U)])
106196 }
107197 }
108198
109199
110200
111201 @Callable(o)
112-func addTaskDetails (v) = if (!(l(o.caller)))
113- then throw("grants working group access only")
114- else {
115- let B = extract(o.payment).amount
116- WriteSet([DataEntry((v + "_reward"), B), DataEntry((v + "_status"), "proposed")])
202+func finishApplicantsVoting (w) = {
203+ func V (W,X) = {
204+ let K = (("tasks_" + w) + "_applicants")
205+ let Y = split(getStringValue(this, K), ";")
206+ let O = Y[W]
207+ let R = (((("tasks_" + w) + "_app_") + O) + "_votes")
208+ let T = b(R)
209+ if ((T > 0))
210+ then 1
211+ else throw(("not enough votes to make decision on " + O))
117212 }
118213
119-
120-
121-@Callable(o)
122-func voteForTaskProposal (v,C) = if (!(n(o)))
123- then throw("you can't vote")
124- else if ((getStringValue(this, (v + "_status")) != "proposed"))
125- then throw("voting is closed or not started")
126- else if (if ((C != -1))
127- then (C != 1)
128- else false)
129- then throw("you need to vote 1 or -1")
130- else {
131- let D = (((v + "_") + toString(o.caller)) + "_vote1")
132- let E = c(D)
133- if (!((E == 0)))
134- then throw("you have already voted")
135- else {
136- let F = (v + "_voting1")
137- let G = c(F)
138- let H = (v + "_voting1_amount")
139- let I = (c(F) + 1)
140- let J = (G + C)
141- ScriptResult(WriteSet([DataEntry(F, J), DataEntry(D, C), DataEntry(H, I)]), TransferSet([ScriptTransfer(o.caller, 500000, unit)]))
142- }
143- }
144-
145-
146-
147-@Callable(o)
148-func finishTaskProposalVoting (v) = if ((a > ((c((v + "_voting1_amount")) * 100) / c("dao_size"))))
149- then throw((("more than " + toString(a)) + "% members have to vote before finishing the voting"))
150- else if (!(l(o.caller)))
151- then throw("grants working group access only")
152- else {
153- let F = (v + "_voting1")
154- let G = c(F)
155- if ((G > 0))
156- then {
157- let K = "ready_to_apply"
158- WriteSet([DataEntry((v + "_status"), K)])
159- }
160- else {
161- let K = "rejected"
162- WriteSet([DataEntry((v + "_status"), K)])
163- }
164- }
165-
166-
167-
168-@Callable(o)
169-func applyForTask (v,L) = {
170- let M = (v + "_applicants")
171- let N = {
172- let f = getString(this, M)
173- if ($isInstanceOf(f, "String"))
174- then {
175- let g = f
176- g
177- }
178- else ""
179- }
180- let O = ((N + ";") + L)
181- WriteSet([DataEntry((((v + "_applicant_") + L) + "_leader"), toString(o.caller)), DataEntry(M, O)])
182- }
183-
184-
185-
186-@Callable(o)
187-func voteForApplicant (v,L,C) = if (!(n(o)))
188- then throw("you can't vote")
189- else {
190- let D = ((((v + "_") + toString(o.caller)) + "_vote_") + L)
191- let z = c(D)
192- if ((z != 0))
193- then throw("you have already voted on this team")
194- else {
195- let P = (((v + "_applicant_") + L) + "_votes")
196- let Q = (((v + "_applicant_") + L) + "_score")
197- let R = (1 + c(P))
198- let S = (C + c(Q))
199- WriteSet([DataEntry(D, C), DataEntry(Q, S)])
200- }
201- }
202-
203-
204-
205-@Callable(o)
206-func finishApplicantsVoting (v) = {
207- func T (U,V) = {
208- let M = (v + "_applicants")
209- let W = split(getStringValue(this, M), ";")
210- let L = W[U]
211- let P = (((v + "_applicant_") + L) + "_votes")
212- let R = c(P)
213- if ((R > 0))
214- then 1
215- else throw(("not enough votes to make decision on " + L))
216- }
217-
218- func X (U,V) = {
219- let M = (v + "_applicants")
220- let W = split(getStringValue(this, M), ";")
221- let L = W[U]
222- let P = (((v + "_applicant_") + L) + "_votes")
223- let R = c(P)
224- let Y = W[V]
225- let Z = (((v + "_applicant_") + Y) + "_votes")
226- let aa = c(Z)
227- if ((R > aa))
228- then U
229- else V
214+ func Z (W,X) = {
215+ let K = (("tasks_" + w) + "_applicants")
216+ let Y = split(getStringValue(this, K), ";")
217+ let O = Y[W]
218+ let R = (((("tasks_" + w) + "_app_") + O) + "_votes")
219+ let T = b(R)
220+ let aa = Y[X]
221+ let ab = (((("tasks_" + w) + "_app_") + aa) + "_votes")
222+ let ac = b(ab)
223+ if ((T > ac))
224+ then W
225+ else X
230226 }
231227
232228 if (!(l(o.caller)))
233229 then throw("grants working group access only")
234230 else {
235- let ab = {
236- let ac = [0, 1]
237- let ad = size(ac)
238- let ae = 0
239- if ((ad == 0))
240- then ae
241- else {
242- let af = X(ae, ac[0])
243- if ((ad == 1))
244- then af
231+ let ad = g((("tasks_" + w) + "_applicants"))
232+ let Y = split(ad, ";")
233+ if ((size(Y) == 0))
234+ then throw("No one has yet responded to the grant")
235+ else {
236+ let ae = {
237+ let af = [0, 1]
238+ let ag = size(af)
239+ let ah = 0
240+ if ((ag == 0))
241+ then ah
245242 else {
246- let ag = X(af, ac[1])
247- if ((ad == 2))
248- then ag
243+ let ai = Z(ah, af[0])
244+ if ((ag == 1))
245+ then ai
249246 else {
250- let ah = X(ag, ac[2])
251- throw("List size exceed 2")
247+ let aj = Z(ai, af[1])
248+ if ((ag == 2))
249+ then aj
250+ else {
251+ let ak = Z(aj, af[2])
252+ throw("List size exceed 2")
253+ }
252254 }
253255 }
254256 }
255- }
256- let M = (v + "_applicants")
257- let W = split(getStringValue(this, M), ";")
258- let L = W[ab]
259- WriteSet([DataEntry((v + "_status"), "team_chosen"), DataEntry((v + "_performer"), L), DataEntry((((v + "_applicant_") + L) + "_work_process"), "can_begin")])
257+ let O = Y[ae]
258+ WriteSet([DataEntry((("tasks_" + w) + "_status"), "team_chosen"), DataEntry((("tasks_" + w) + "_performer"), O), DataEntry((((("tasks_" + w) + "_app_") + O) + "_process"), "can_begin")])
259+ }
260260 }
261261 }
262262
263263
264264
265265 @Callable(o)
266-func startWork (v) = {
267- let L = getStringValue(this, (v + "_performer"))
268- if ((toString(o.caller) != getStringValue(this, (((v + "_applicant_") + L) + "_leader"))))
266+func startWork (w) = {
267+ let O = getStringValue(this, (("tasks_" + w) + "_performer"))
268+ if ((toString(o.caller) != getStringValue(this, (((("tasks_" + w) + "_app_") + O) + "_leader"))))
269269 then throw("team leader only")
270- else WriteSet([DataEntry((v + "_status"), "work_started"), DataEntry((((v + "_applicant_") + L) + "_work_process"), "work_started")])
270+ else WriteSet([DataEntry((("tasks_" + w) + "_status"), "work_started"), DataEntry((((("tasks_" + w) + "_app_") + O) + "_process"), "work_started")])
271271 }
272272
273273
274274
275275 @Callable(o)
276-func acceptWorkResult (v) = if (!(l(o.caller)))
276+func rejectTask (w) = if (!(l(o.caller)))
277277 then throw("grants working group access only")
278278 else {
279- let ai = c((v + "_reward"))
280- let L = getStringValue(this, (v + "_performer"))
281- let aj = getStringValue(this, (((v + "_applicant_") + L) + "_leader"))
282- ScriptResult(WriteSet([DataEntry((v + "_status"), "work_finished"), DataEntry((((v + "_applicant_") + L) + "_work_process"), "work_finished")]), TransferSet([ScriptTransfer(addressFromStringValue(aj), ai, unit)]))
279+ let O = getStringValue(this, (("tasks_" + w) + "_performer"))
280+ WriteSet([DataEntry((("tasks_" + w) + "_status"), "rejected"), DataEntry((((("tasks_" + w) + "_app_") + O) + "_process"), "rejected")])
281+ }
282+
283+
284+
285+@Callable(o)
286+func acceptWorkResult (w,al) = if (!(l(o.caller)))
287+ then throw("grants working group access only")
288+ else {
289+ let am = b((("tasks_" + w) + "_reward"))
290+ let O = getStringValue(this, (("tasks_" + w) + "_performer"))
291+ let an = getStringValue(this, (((("tasks_" + w) + "_app_") + O) + "_leader"))
292+ ScriptResult(WriteSet([DataEntry((("tasks_" + w) + "_status"), "work_finished"), DataEntry((((("tasks_" + w) + "_app_") + O) + "_process"), "work_finished"), DataEntry((((("tasks_" + w) + "_app_") + O) + "_report"), al)]), TransferSet([ScriptTransfer(addressFromStringValue(an), am, unit)]))
283293 }
284294
285295

github/deemru/w8io/c3f4982 
51.68 ms