Transfers view
UTXO view
Obyte.org
Unit Legend
- not on main chain, not stable
- main chain, not stable
- bad unit
- not on main chain, stable/confirmed/final
- main chain, stable/confirmed/final
- not on main chain, selected
- main chain, selected
Close
Close
Unit ID
XiBqherSVMNPfJ9ljBjOTtwIcLnCzhSaVGdQsLEd4nI=
Received
24.10.2019 03:28:58
Confirmation delay (full node)
6 minutes 28 seconds
Confirmation delay (light node)
8 minutes 48 seconds
Authors
DPYEPM34AUBLZFLCJKKGSJ3R34373IUA
Children
3B7Tt8JCj2FpIGI1BgMhCCyAEkemiFafqzBW/O4HH+A=
Parents
pCa0P/u5ZX/COkNyAAVNEv/jnH6X6vRhE003t3fFiq8=
Messages
Definition
Address:
XSU7W4AUAS5YE6TNIK7OH4KQJUVTTQR3
Definition:
[ "autonomous agent", { "messages": { "cases": [ { "if": "{ // Obotic / MicroGrid by
[email protected]
// My best entry, combines techniques from all my previous AA, structure based on REDvsBLUE // 1) Scientist send args to be processed by obots $project = "HFLVDJOZ3ZF2UR2ZQU4IOJRCPTC5DLZT" ; // Select Random Registered Address AA $min_poolsize = 1 ; // use 1 for demo $processors_per_round = 3 ; // limited by The total number of secondary AAs stemming from a single primary AA cannot exceed 10, otherwise the primary AA fails and bounces. Takes ~3 secondary AAs per processor, e.g. 3 processors_per_round takes 9 secondary AAs. $storage = 1000 ; $min_round_cost = $processors_per_round * ( 21000 + $storage * 4 ) ; if( !var[ $project ][ "count" ] ) bounce( "$project " || $project || " AA missing 'count'") ; if( var[ $project ][ "count" ] < $min_poolsize ) bounce( "waiting for " || $project || " to have " || $min_poolsize || " registered obots" ) ; $check = trigger.data.check ; if( $check ) bounce( "round=" || $check || " result= " || var[ $check || "_result" ] ) ; // $min_poolsize >= $processors_per_round $min_poolsize >= 1 // Should be at least greater than processors_per_round, use 1 for demo }", "messages": { "cases": [ { "if": "{ // REQUEST NEW ROUND if( !trigger.data.message AND !trigger.data.round AND trigger.output[[asset=base]] < $min_round_cost ) bounce( 'need to send ' || $min_round_cost || ' to request a new round'); // TODO check for trigger.data.args ( !trigger.data.message AND !trigger.data.round ) // means not messages from project nor obot }", "init": "{ $process = '{ "args": ' || '"obotic"' || ', "processor": 1, "round": ' || ( var[ "round" ] + 1 ) || ' }' ; }", "messages": [ { "app": "data", "payload": { "message": "{ $process }", "nosend": true } }, { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{ $project }", "amount": "{ trigger.output[[asset=base]] - $storage }" } ] } }, { "app": "state", "state": "{ var[ "round" ] += 1 ; }" } ] }, { "if": "{ // START ROUND trigger.address == $project AND trigger.data.message AND trigger.data.choosen }", "init": "{ $process = json_parse( trigger.data.message ) ; $args = json_stringify( $process.args ) ; $processor = json_parse( $process.processor ) ; $round = $process.round ; $morebot = '{ "args": ' || $args || ', "processor": ' || ( $processor + 1 ) || ', "round": ' || $round || ' }' ; // do morebot here $obot = trigger.data.choosen ; $fee = var[ $obot ][ "fee" ] otherwise 21000 ; }", "messages": [ { "if": "{ $processor < $processors_per_round AND trigger.output[[asset=base]] > ( $fee + $storage ) }", "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{ $project }", "amount": "{ trigger.output[[asset=base]] - ( $fee + $storage ) }" }, { "address": "{ $obot }", "amount": "{ $fee }" } ] } }, { "if": "{ $processor < $processors_per_round AND trigger.output[[asset=base]] > ( $fee + $storage ) }", "app": "data", "payload": { "message": "{ $morebot }", "args": "{ $args }", "round": "{ $round }", "nosend": true } }, { "if": "{ $processor >= $processors_per_round AND trigger.output[[asset=base]] > $fee }", "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "{ $obot }", "amount": "{ $fee }" } ] } }, { "if": "{ $processor >= $processors_per_round AND trigger.output[[asset=base]] > $fee }", "app": "data", "payload": { "args": "{ $args }", "round": "{ $round }" } }, { "app": "state", "state": "{ // ROUND ADMINISTRATOR // debug // response[ "processor" ] = $processor ; // response[ "morebot" ] = $morebot ; // response[ "args" ] = $args ; // response[ "round" ] = $round ; var[ $round || "_" || $obot ] = "awaiting result" ; // valid processor var[ $round || "_deadline" ] = timestamp + 43200 ; // start countdown }" } ] }, { "if": "{ // RANK RESULTS // cant use app: poll because results are not pre-determined $round = json_parse( trigger.data.round ); if( $round ){ $obot = trigger.data.address ; $ro = $round || "_" || $obot ; if( !var[ $ro ] ) bounce( $ro || "not a valid obot or round") ; if( var[ $ro ] != "awaiting result" ) bounce( "obot already submitted result" ) ; if( var[ $round || "_deadline" ] < timestamp ) bounce( "round is already over" ) ; $hash = sha256( trigger.data.result ) ; $rh = $round || "_" || $hash ; } $round }", "messages": [ { "app": "state", "state": "{ var[ $ro ] = $hash ; // save result hash var[ $rh || "_submitters" ] = var[ $rh || "_submitters" ] || ", " || $obot ; // list of submitters var[ $rh || "_result" ] = trigger.data.result ; // actual result var[ $rh ] += 1 ; // votes if( var[ $round || "_highest_rank" ] == false ) var[ $round || "_highest_rank" ] = 0 ; if( var[ $rh ] > var[ $round || "_highest_rank" ] ){ // new highest rank var[ $round || "_best_result" ] = $hash ; var[ $round || "_highest_rank" ] = var[ $rh ] ; } }" } ] }, { "messages": [ { "app": "payment", "payload": { "asset": "base", "outputs": [ { "address": "HFNBIQTUNVMRM7PDP6NT2QRKLR62FOGR" } ] } }, { "app": "state", "state": "{ if( !var[ "owner" ] ) var[ "owner" ] = "HFNBIQTUNVMRM7PDP6NT2QRKLR62FOGR"; }" } ] } ] } } ] } } ]
Witnesses
2FF7PSL7FYXVU5UIQHCVDTTPUOOG75GX
2GPBEZTAXKWEXMWCTGZALIZDNWS5B3V7
4H2AMKF6YO2IWJ5MYWJS3N7Y2YU2T4Z5
DFVODTYGTS3ILVOQ5MFKJIERH6LGKELP
ERMF7V2RLCPABMX5AMNGUQBAH4CD5TK4
F4KHJUCLJKY4JV7M5F754LAJX4EB7M4N
IOF6PTBDTLSTBS5NWHUSD7I2NHK3BQ2T
O4K4QILG6VPGTYLRAI2RGYRFJZ7N2Q2O
OPNUXBRSSQQGHKQNEPD2GLWQYEUY5XLD
PA4QK46276MJJD5DBOLIBMYKNNXMUVDP
RJDYXC4YQ4AZKFYTJVCR5GQJF5J6KPRI
WELOXP3EOA75JWNO6S5ZJHOO3EYFKPIR
Technical information
Fees:
5,645
bytes
(353 headers, 5292 payload)
Level:
1119487
Witnessed level:
1119480
Last ball unit:
dVoc3o2xdcklbAQVTgBw9Dj5ib/gAtiQramiSQuMXBw=
Main chain index:
1118245
Latest included mc index:
1118244
Status:
stable/confirmed/final