2018-04-13 22:50:22 +03:00
|
|
|
/- constitution, ethereum
|
2018-04-18 00:11:59 +03:00
|
|
|
/+ ethereum
|
|
|
|
=> [^constitution ethereum]
|
2018-04-13 22:50:22 +03:00
|
|
|
|%
|
2018-04-18 01:32:02 +03:00
|
|
|
++ event-log-to-hull-diffs
|
|
|
|
::=, ships-events
|
|
|
|
=> [ships-events .]
|
|
|
|
|= log=event-log
|
|
|
|
^- (list (pair ship diff-hull))
|
|
|
|
~? ?=(~ mined.log) %processing-unmined-event
|
|
|
|
::
|
|
|
|
?: =(event.log transferred)
|
|
|
|
=+ ^- [who=@ wer=@ux] ::TODO should we make @p work here?
|
|
|
|
(decode-results data.log ~[%uint %address])
|
|
|
|
[who %owner wer]~
|
|
|
|
::
|
|
|
|
?: =(event.log activated)
|
|
|
|
=+ ^- [who=@ wer=@ux]
|
|
|
|
(decode-results data.log ~[%uint %address])
|
|
|
|
:~ ^- (pair ship diff-hull)
|
|
|
|
:+ who %full
|
|
|
|
%*(. *hull owner wer, sponsor (sein:title who))
|
|
|
|
::
|
|
|
|
^- (pair ship diff-hull)
|
|
|
|
[(sein:title who) %spawned who]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
?: =(event.log escape-requested)
|
|
|
|
=+ ^- [who=@ wer=@]
|
|
|
|
(decode-results data.log ~[%uint %uint])
|
|
|
|
[who %escape `wer]~
|
|
|
|
::
|
|
|
|
?: =(event.log escape-canceled)
|
|
|
|
=/ who=@ (decode-results data.log ~[%uint])
|
|
|
|
[who %escape ~]~
|
|
|
|
::
|
|
|
|
?: =(event.log escape-accepted)
|
|
|
|
=+ ^- [who=@ wer=@]
|
|
|
|
(decode-results data.log ~[%uint %uint])
|
|
|
|
[who %sponsor wer]~
|
|
|
|
::
|
|
|
|
?: =(event.log changed-keys)
|
|
|
|
=+ ^- [who=@ enc=octs aut=octs rev=@ud]
|
|
|
|
%+ decode-results data.log
|
|
|
|
~[%uint [%bytes-n 32] [%bytes-n 32] %uint]
|
|
|
|
?> &(=(p.enc 32) =(p.aut 32)) :: sanity
|
|
|
|
[who %keys q.enc q.aut rev]~
|
|
|
|
::NOTE 0x8be0...57e0 is Owneable's OwnershipTransferred(address,address).
|
|
|
|
:: changed-dns is handled separately since it doesn't affect hulls.
|
|
|
|
~& [%unimplemented-event event.log]
|
|
|
|
~
|
|
|
|
::
|
2018-04-18 01:34:26 +03:00
|
|
|
++ apply-hull-diff
|
|
|
|
|= [hul=hull dif=diff-hull]
|
|
|
|
^- hull
|
|
|
|
?- -.dif
|
|
|
|
%full new.dif
|
|
|
|
%owner hul(owner new.dif)
|
|
|
|
%spawned =+ (~(put in spawned.hul) who.dif)
|
|
|
|
hul(spawn-count +(spawn-count.hul), spawned -)
|
|
|
|
%keys hul(encryption-key enc.dif, authentication-key aut.dif)
|
|
|
|
%sponsor hul(sponsor new.dif, escape ~)
|
|
|
|
%escape hul(escape new.dif)
|
|
|
|
==
|
|
|
|
::
|
2018-04-13 22:50:22 +03:00
|
|
|
++ parse-id
|
|
|
|
|= id=@t
|
2018-04-18 00:11:59 +03:00
|
|
|
^- ships:function
|
2018-04-13 22:50:22 +03:00
|
|
|
|^
|
|
|
|
%+ rash id
|
|
|
|
;~ pose
|
|
|
|
(function %ships 'ships' shipname)
|
|
|
|
(function %get-spawned 'getSpawned' shipname)
|
2018-04-18 00:11:59 +03:00
|
|
|
(function %dns-domains 'dnsDomain' dem:ag)
|
2018-04-13 22:50:22 +03:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ function
|
|
|
|
|* [tag=@tas fun=@t rul=rule]
|
|
|
|
;~(plug (cold tag (jest fun)) (ifix [pel per] rul))
|
|
|
|
::
|
|
|
|
++ shipname
|
|
|
|
;~(pfix sig fed:ag)
|
|
|
|
--
|
|
|
|
--
|