mirror of
https://github.com/urbit/shrub.git
synced 2025-01-04 18:43:46 +03:00
test that individual breaches work for galaxies for ames
This commit is contained in:
parent
9a83984374
commit
e54d9bd4e7
@ -119,7 +119,7 @@
|
||||
=. tym (max +(tym) now.hid)
|
||||
=/ poke-result (mule |.((slum poke tym ue)))
|
||||
?: ?=(%| -.poke-result)
|
||||
%- (slog >%aqua-crash< p.poke-result)
|
||||
%- (slog >%aqua-crash< >guest=who< p.poke-result)
|
||||
$
|
||||
=. snap +.p.poke-result
|
||||
=. ..abet-pe (publish-event tym ue)
|
||||
@ -513,14 +513,15 @@
|
||||
++ peek-x-i
|
||||
|= pax=path
|
||||
^- (unit (unit [%noun noun]))
|
||||
?. ?=([@ @ @ *] pax)
|
||||
?. ?=([@ @ @ @ *] pax)
|
||||
~
|
||||
=/ who (slav %p i.pax)
|
||||
=/ who (slav %p i.t.pax)
|
||||
=/ pier (~(get by piers) who)
|
||||
=/ ren i.t.t.t.pax
|
||||
?~ pier
|
||||
~
|
||||
:^ ~ ~ %noun
|
||||
(peek:(pe who) [%cx pax])
|
||||
(peek:(pe who) pax)
|
||||
::
|
||||
:: Get all created ships
|
||||
::
|
||||
|
28
app/ph.hoon
28
app/ph.hoon
@ -61,7 +61,7 @@
|
||||
++ manual-tests
|
||||
^- (list (pair term [(list ship) _*form:(ph ,~)]))
|
||||
=+ (ph-tests our.hid)
|
||||
=/ eth-node (spawn-galaxy:ph-azimuth ~rel)
|
||||
=/ eth-node (spawn-galaxy:ph-azimuth ~bud)
|
||||
=/ m (ph ,~)
|
||||
:~ :+ %boot-bud
|
||||
~[~bud]
|
||||
@ -107,15 +107,29 @@
|
||||
::
|
||||
:+ %boot-az
|
||||
~[~bud]
|
||||
;< [node=_eth-node ~] bind:m
|
||||
;< [eth-node=_eth-node ~] bind:m
|
||||
%+ (wrap-philter ,_eth-node ,~)
|
||||
router:eth-node
|
||||
(raw-ship ~bud `(dawn:legacy:ph-azimuth ~bud))
|
||||
=. node (spawn-galaxy:node ~pem)
|
||||
;< [node=_eth-node ~] bind:m
|
||||
(raw-ship ~bud `(dawn:eth-node ~bud))
|
||||
(pure:m ~)
|
||||
::
|
||||
:+ %breach-hi
|
||||
~[~bud ~dev]
|
||||
=. eth-node (spawn-galaxy:eth-node ~dev)
|
||||
;< [eth-node=_eth-node ~] bind:m
|
||||
%+ (wrap-philter ,_eth-node ,~)
|
||||
router:node
|
||||
(pure:m ~)
|
||||
router:eth-node
|
||||
;< ~ bind:m (raw-ship ~bud `(dawn:eth-node ~bud))
|
||||
;< ~ bind:m (raw-ship ~dev `(dawn:eth-node ~dev))
|
||||
(send-hi ~bud ~dev)
|
||||
;< eth-node=_eth-node bind:m
|
||||
(breach-and-hear:eth-node our.hid ~dev ~bud)
|
||||
;< [eth-node=_eth-node ~] bind:m
|
||||
%+ (wrap-philter ,_eth-node ,~)
|
||||
router:eth-node
|
||||
;< ~ bind:m (send-hi-not-responding ~bud ~dev)
|
||||
;< ~ bind:m (raw-ship ~dev `(dawn:eth-node ~dev))
|
||||
(wait-for-dojo ~bud "hi ~dev successful")
|
||||
(pure:m ~)
|
||||
==
|
||||
::
|
||||
|
@ -8,8 +8,11 @@
|
||||
+$ az-log [topics=(lest @) data=@t]
|
||||
--
|
||||
=| logs=(list az-log) :: oldest logs first
|
||||
=| eth-filter=(unit [from-block=@ud last-block=@ud address=@ux])
|
||||
=, azimuth-events:azimuth
|
||||
=| lives=(map ship [lyfe=life rut=rift])
|
||||
=| $= eth-filters
|
||||
$: next=_1 :: jael assumes != 0
|
||||
all=(map @ud [from-block=@ud last-block=@ud address=@ux])
|
||||
==
|
||||
|%
|
||||
++ this-az .
|
||||
++ add-logs
|
||||
@ -47,31 +50,38 @@
|
||||
(get-param-obj req 'toBlock')
|
||||
?: =(method 'eth_newFilter')
|
||||
:+ |
|
||||
(answer-request req s+'0xa')
|
||||
=. eth-filter
|
||||
:^ ~
|
||||
(answer-request req s+(scot %ux next.eth-filters))
|
||||
=. all.eth-filters
|
||||
%+ ~(put by all.eth-filters)
|
||||
next.eth-filters
|
||||
:+
|
||||
(get-param-obj req 'fromBlock')
|
||||
(get-param-obj req 'fromBlock')
|
||||
(get-param-obj req 'address')
|
||||
=. next.eth-filters +(next.eth-filters)
|
||||
[%cont ..stay]
|
||||
?: =(method 'eth_getFilterLogs')
|
||||
~& [%filter-logs latest-block eth-filter]
|
||||
?~ eth-filter
|
||||
=/ fil (~(get by all.eth-filters) (get-filter-id req))
|
||||
?~ fil
|
||||
~|(%no-filter-not-implemented !!)
|
||||
:+ |
|
||||
%+ answer-request req
|
||||
~| [eth-filter latest-block]
|
||||
(logs-to-json from-block.u.eth-filter latest-block)
|
||||
=. last-block.u.eth-filter latest-block
|
||||
~| [eth-filters latest-block]
|
||||
(logs-to-json from-block.u.fil latest-block)
|
||||
=. last-block.u.fil latest-block
|
||||
[%cont ..stay]
|
||||
?: =(method 'eth_getFilterChanges')
|
||||
~& [%filter-changes latest-block eth-filter]
|
||||
?~ eth-filter
|
||||
=/ fil-id (get-filter-id req)
|
||||
=/ fil (~(get by all.eth-filters) fil-id)
|
||||
?~ fil
|
||||
~|(%no-filter-not-implemented !!)
|
||||
:+ |
|
||||
%+ answer-request req
|
||||
(logs-to-json last-block.u.eth-filter latest-block)
|
||||
=. last-block.u.eth-filter latest-block
|
||||
(logs-to-json last-block.u.fil latest-block)
|
||||
=. all.eth-filters
|
||||
%+ ~(put by all.eth-filters)
|
||||
fil-id
|
||||
u.fil(last-block latest-block)
|
||||
[%cont ..stay]
|
||||
[& ~ %wait ~]
|
||||
::
|
||||
@ -100,6 +110,16 @@
|
||||
?> ?=([* ~] array)
|
||||
i.array
|
||||
::
|
||||
++ get-filter-id
|
||||
|= req=@t
|
||||
=, dejs:format
|
||||
%- hex-to-num:ethereum
|
||||
=/ id
|
||||
%. (need (de-json:html req))
|
||||
(ot params+(ar so) ~)
|
||||
?> ?=([* ~] id)
|
||||
i.id
|
||||
::
|
||||
++ answer-request
|
||||
|= [req=@t result=json]
|
||||
^- (list ph-event)
|
||||
@ -163,73 +183,171 @@
|
||||
--
|
||||
--
|
||||
::
|
||||
++ dawn
|
||||
|= who=ship
|
||||
^- dawn-event
|
||||
=/ lyfe lyfe:(~(got by lives) who)
|
||||
:* [who lyfe sec:ex:(get-keys who lyfe) ~]
|
||||
(^sein:title who)
|
||||
get-czars
|
||||
~[~['arvo' 'netw' 'ork']]
|
||||
0
|
||||
`(need (de-purl:html 'http://localhost:8545'))
|
||||
~
|
||||
==
|
||||
::
|
||||
:: Should only do galaxies
|
||||
::
|
||||
++ get-czars
|
||||
^- (map ship [life pass])
|
||||
%- malt
|
||||
%+ murn
|
||||
~(tap by lives)
|
||||
|= [who=ship lyfe=life rut=rift]
|
||||
?. =(%czar (clan:title who))
|
||||
~
|
||||
%- some
|
||||
:+ who lyfe
|
||||
%^ pass-from-eth:azimuth
|
||||
(as-octs:mimes:html (get-public who lyfe %crypt))
|
||||
(as-octs:mimes:html (get-public who lyfe %auth))
|
||||
1
|
||||
::
|
||||
++ spawn-galaxy
|
||||
|= who=@p
|
||||
?< (~(has by lives) who)
|
||||
=. lives (~(put by lives) who [1 0])
|
||||
%- add-logs
|
||||
:~ [~[activated who] '']
|
||||
[~[owner-changed who 0xdead.beef] '']
|
||||
:- ~[changed-keys who]
|
||||
%- crip
|
||||
%- prefix-hex:ethereum
|
||||
;: welp
|
||||
(get-keys who 1 %auth)
|
||||
(get-keys who 1 %crypt)
|
||||
(render-hex-bytes:ethereum 32 `@`1)
|
||||
(render-hex-bytes:ethereum 32 `@`1)
|
||||
:~ (activated:lo who)
|
||||
(owner-changed:lo who 0xdead.beef)
|
||||
%- changed-keys:lo
|
||||
:* who
|
||||
(get-public who 1 %crypt)
|
||||
(get-public who 1 %auth)
|
||||
1
|
||||
1
|
||||
==
|
||||
==
|
||||
::
|
||||
:: our: host ship
|
||||
:: who: cycle keys
|
||||
:: her: wait until hears about cycle
|
||||
::
|
||||
++ cycle-keys-and-hear
|
||||
|= [our=@p who=@p her=@p]
|
||||
=. this-az (cycle-keys who)
|
||||
=/ new-lyfe lyfe:(~(got by lives) who)
|
||||
=/ m (ph ,_this-az)
|
||||
;< [this-az=_this-az ~] bind:m
|
||||
%+ (wrap-philter ,_this-az ,~)
|
||||
router:this-az
|
||||
^+ *form:(ph ,~)
|
||||
|= pin=ph-input
|
||||
:+ & ~
|
||||
=/ aqua-pax /i/j/(scot %p her)/life/(scot %da now.pin)/(scot %p who)/noun
|
||||
=/ lyfe (scry-aqua noun our now.pin aqua-pax)
|
||||
~& [new-lyfe=[0 new-lyfe] lyfe=lyfe]
|
||||
?: =([~ new-lyfe] lyfe)
|
||||
[%done ~]
|
||||
[%wait ~]
|
||||
(pure:m this-az)
|
||||
::
|
||||
++ cycle-keys
|
||||
|= who=@p
|
||||
=/ prev (~(got by lives) who)
|
||||
=/ lyfe +(lyfe.prev)
|
||||
=. lives (~(put by lives) who [lyfe rut.prev])
|
||||
%- add-logs
|
||||
:_ ~
|
||||
%- changed-keys:lo
|
||||
:* who
|
||||
(get-public who lyfe %crypt)
|
||||
(get-public who lyfe %auth)
|
||||
1
|
||||
lyfe
|
||||
==
|
||||
::
|
||||
:: our: host ship
|
||||
:: who: breachee
|
||||
:: her: wait until hears about breach
|
||||
::
|
||||
++ breach-and-hear
|
||||
|= [our=@p who=@p her=@p]
|
||||
=. this-az (breach who)
|
||||
=/ new-rut rut:(~(got by lives) who)
|
||||
=/ m (ph ,_this-az)
|
||||
;< [this-az=_this-az ~] bind:m
|
||||
%+ (wrap-philter ,_this-az ,~)
|
||||
router:this-az
|
||||
^+ *form:(ph ,~)
|
||||
|= pin=ph-input
|
||||
:+ & ~
|
||||
=/ aqua-pax /i/j/(scot %p her)/rift/(scot %da now.pin)/(scot %p who)/noun
|
||||
=/ rut (scry-aqua noun our now.pin aqua-pax)
|
||||
~& [new-rut=[0 new-rut] rut=rut]
|
||||
?: =([~ new-rut] rut)
|
||||
[%done ~]
|
||||
[%wait ~]
|
||||
(pure:m this-az)
|
||||
::
|
||||
++ breach
|
||||
|= who=@p
|
||||
=. this-az (cycle-keys who)
|
||||
=/ prev (~(got by lives) who)
|
||||
=/ rut +(rut.prev)
|
||||
=. lives (~(put by lives) who [lyfe.prev rut])
|
||||
%- add-logs
|
||||
:_ ~
|
||||
(broke-continuity:lo who rut)
|
||||
::
|
||||
++ get-keys
|
||||
|= [who=@p life=@ud typ=?(%auth %crypt)]
|
||||
%+ render-hex-bytes:ethereum 32
|
||||
%- keccak-256:keccak:crypto
|
||||
%- as-octs:mimes:html
|
||||
:((cury cat 3) (scot %p who) (scot %ud life) typ)
|
||||
|= [who=@p lyfe=life]
|
||||
^- acru:ames
|
||||
%+ pit:nu:crub:crypto 32
|
||||
(can 5 [1 (scot %p who)] [1 (scot %ud lyfe)] ~)
|
||||
::
|
||||
:: XX replace
|
||||
++ get-public
|
||||
|= [who=@p lyfe=life typ=?(%auth %crypt)]
|
||||
=/ bod (rsh 3 1 pub:ex:(get-keys who lyfe))
|
||||
=+ [enc=(rsh 8 1 bod) aut=(end 8 1 bod)]
|
||||
?: =(%auth typ)
|
||||
aut
|
||||
enc
|
||||
::
|
||||
++ legacy
|
||||
:: Generate logs
|
||||
::
|
||||
++ lo
|
||||
=, azimuth-events:azimuth
|
||||
|%
|
||||
++ dawn
|
||||
++ activated
|
||||
|= who=ship
|
||||
^- dawn-event
|
||||
:* (need (private-key who))
|
||||
(^sein:title who)
|
||||
czar
|
||||
~[~['arvo' 'netw' 'ork']]
|
||||
0
|
||||
`(need (de-purl:html 'http://localhost:8545'))
|
||||
~
|
||||
^- az-log
|
||||
[~[^activated who] '']
|
||||
::
|
||||
++ owner-changed
|
||||
|= [who=ship owner=@ux]
|
||||
^- az-log
|
||||
[~[^owner-changed who owner] '']
|
||||
::
|
||||
++ changed-keys
|
||||
|= [who=ship enc=@ux aut=@ux crypto=@ud lyfe=life]
|
||||
^- az-log
|
||||
:- ~[^changed-keys who]
|
||||
%- crip
|
||||
%- prefix-hex:ethereum
|
||||
;: welp
|
||||
(render-hex-bytes:ethereum 32 `@`enc)
|
||||
(render-hex-bytes:ethereum 32 `@`aut)
|
||||
(render-hex-bytes:ethereum 32 `@`crypto)
|
||||
(render-hex-bytes:ethereum 32 `@`lyfe)
|
||||
==
|
||||
::
|
||||
++ czar
|
||||
^- (map ship [life pass])
|
||||
%- my
|
||||
^- (list (pair ship [life pass]))
|
||||
%+ murn (gulf 0x0 0xff)
|
||||
|= her=ship
|
||||
^- (unit [ship life pass])
|
||||
=/ pub (public-key her)
|
||||
?~ pub
|
||||
~
|
||||
`[her u.pub]
|
||||
::
|
||||
++ private-key
|
||||
|= who=ship
|
||||
=- (~(get by -) who)
|
||||
^- (map ship seed:able:jael)
|
||||
%- my
|
||||
:~ [~bud ~bud 1 'BbudB' ~]
|
||||
[~dev ~dev 1 'Bdev' ~]
|
||||
==
|
||||
::
|
||||
++ public-key
|
||||
|= who=ship
|
||||
^- (unit [life pass])
|
||||
=/ priv (private-key who)
|
||||
?~ priv
|
||||
~
|
||||
=/ cub (nol:nu:crub:crypto key.u.priv)
|
||||
`[lyf.u.priv pub:ex:cub]
|
||||
++ broke-continuity
|
||||
|= [who=ship rut=rift]
|
||||
^- az-log
|
||||
:- ~[^broke-continuity who]
|
||||
%- crip
|
||||
%- prefix-hex:ethereum
|
||||
(render-hex-bytes:ethereum 32 `@`rut)
|
||||
--
|
||||
--
|
||||
|
@ -4,22 +4,6 @@
|
||||
=, ph
|
||||
=, ph-util
|
||||
|= our=ship
|
||||
=> :: Helper functions, not tests
|
||||
::
|
||||
|%
|
||||
:: Scry into a running aqua ship
|
||||
::
|
||||
++ scry-aqua
|
||||
|* [a=mold now=@da pax=path]
|
||||
.^ a
|
||||
%gx
|
||||
(scot %p our)
|
||||
%aqua
|
||||
(scot %da now)
|
||||
pax
|
||||
==
|
||||
::
|
||||
--
|
||||
::
|
||||
:: Useful tests
|
||||
::
|
||||
@ -31,6 +15,16 @@
|
||||
|= ph-input
|
||||
[& ~ %wait ~]
|
||||
::
|
||||
:: Stall until you run :aqua|dojo ~ship "%go" on any ship.
|
||||
::
|
||||
++ please-press-enter
|
||||
^+ *form:(ph ,~)
|
||||
|= pin=ph-input
|
||||
:+ & ~
|
||||
?: (is-dojo-output who.pin who.pin uf.pin "%go")
|
||||
[%done ~]
|
||||
[%wait ~]
|
||||
::
|
||||
:: Test to produce events unconditionally.
|
||||
::
|
||||
++ just-events
|
||||
@ -40,6 +34,18 @@
|
||||
|= ph-input
|
||||
[& events %done ~]
|
||||
::
|
||||
::
|
||||
::
|
||||
++ wait-for-dojo
|
||||
|= [her=@p what=tape]
|
||||
=/ m (ph ,~)
|
||||
^- form:m
|
||||
|= pin=ph-input
|
||||
:+ & ~
|
||||
?. (is-dojo-output her who.pin uf.pin what)
|
||||
[%wait ~]
|
||||
[%done ~]
|
||||
::
|
||||
:: Boot ship; don't check it succeeded.
|
||||
::
|
||||
++ boot-ship
|
||||
@ -76,18 +82,16 @@
|
||||
++ send-hi
|
||||
|= [from=@p to=@p]
|
||||
=/ m (ph ,~)
|
||||
^- form:m
|
||||
;< ~ bind:m
|
||||
^- form:m
|
||||
|= ph-input
|
||||
[& (dojo from "|hi {(scow %p to)}") %done ~]
|
||||
^- form:m
|
||||
|= input=ph-input
|
||||
^- output:m
|
||||
:+ & ~
|
||||
?. (is-dojo-output from who.input uf.input "hi {(scow %p to)} successful")
|
||||
[%wait ~]
|
||||
[%done ~]
|
||||
;< ~ bind:m (just-events (dojo from "|hi {(scow %p to)}"))
|
||||
(wait-for-dojo from "hi {(scow %p to)} successful")
|
||||
::
|
||||
:: Send "|hi" and wait for "not responding" message
|
||||
::
|
||||
++ send-hi-not-responding
|
||||
|= [from=@p to=@p]
|
||||
=/ m (ph ,~)
|
||||
;< ~ bind:m (just-events (dojo from "|hi {(scow %p to)}"))
|
||||
(wait-for-dojo from "{(scow %p to)} not responding still trying")
|
||||
::
|
||||
:: Boot a ship and verify it booted. Parent must already be booted.
|
||||
::
|
||||
@ -153,11 +157,11 @@
|
||||
=/ pax /home/(scot %da now.pin)/sur/aquarium/hoon
|
||||
=/ aqua-pax
|
||||
;: weld
|
||||
/i/(scot %p her)
|
||||
/i/cx/(scot %p her)
|
||||
pax(- des)
|
||||
/noun
|
||||
==
|
||||
?: =(warped (need (scry-aqua (unit @) now.pin aqua-pax)))
|
||||
?: =(warped (need (scry-aqua (unit @) our now.pin aqua-pax)))
|
||||
[& ~ %done ~]
|
||||
[& ~ %wait ~]
|
||||
--
|
||||
|
@ -87,4 +87,16 @@
|
||||
?~ q.q.uf ~
|
||||
?. =(p.u.q.q.uf (rash dest auri:de-purl:html)) ~
|
||||
`[p.q.uf q.u.q.q.uf]
|
||||
::
|
||||
:: Scry into a running aqua ship
|
||||
::
|
||||
++ scry-aqua
|
||||
|* [a=mold our=@p now=@da pax=path]
|
||||
.^ a
|
||||
%gx
|
||||
(scot %p our)
|
||||
%aqua
|
||||
(scot %da now)
|
||||
pax
|
||||
==
|
||||
--
|
||||
|
Loading…
Reference in New Issue
Block a user