shrub/pkg/arvo/tests/lib/naive.hoon

809 lines
28 KiB
Plaintext
Raw Normal View History

/+ *test, naive, ethereum, azimuth, *naive-transactions
2021-05-11 21:28:43 +03:00
::
2021-03-18 03:27:30 +03:00
|%
++ n |=([=^state:naive =^input:naive] (%*(. naive lac |) verifier 1.337 +<))
2021-03-18 04:07:21 +03:00
::
2021-04-28 03:31:38 +03:00
++ addr address-from-prv:key:ethereum
::
2021-03-18 04:07:21 +03:00
++ log
2021-04-15 02:58:27 +03:00
|= [log-name=@ux data=@ux topics=(lest @)]
2021-03-18 04:07:21 +03:00
^- ^input:naive
2021-04-02 05:24:31 +03:00
[%log *@ux data log-name topics]
2021-03-18 04:07:21 +03:00
::
:: ~bud is so that we aren't testing something impossible in Azimuth, like a star spawned before its sponsor galaxy
2021-03-18 04:07:21 +03:00
::
++ init-bud
|= =^state:naive
2021-04-15 01:54:40 +03:00
^- [effects:naive ^state:naive]
2021-05-06 06:25:34 +03:00
(n state (owner-changed:l1 ~bud (addr %bud-key-0)))
::
:: ~wes is for testing sponsors of stars
::
++ init-wes
|= =^state:naive
^- [effects:naive ^state:naive]
(n state (owner-changed:l1 ~wes (addr %wes-key-0)))
::
:: ~dopbud is for testing L1 ownership with L2 spawn proxy
::
++ init-dopbud
|= =^state:naive
2021-04-15 01:54:40 +03:00
^- [effects:naive ^state:naive]
=^ f1 state (init-bud state)
=^ f2 state (n state (owner-changed:l1 ~dopbud (addr %dopbud-key-0)))
2021-04-14 21:33:31 +03:00
=^ f3 state (n state (changed-spawn-proxy:l1 ~dopbud deposit-address:naive))
[:(welp f1 f2 f3) state]
::
:: ~marbud is for testing L2 ownership
2021-03-18 04:07:21 +03:00
::
++ init-marbud
2021-03-18 04:07:21 +03:00
|= =^state:naive
2021-04-15 01:54:40 +03:00
^- [effects:naive ^state:naive]
2021-03-18 04:07:21 +03:00
=^ f1 state (init-bud state)
=^ f2 state (n state (owner-changed:l1 ~marbud (addr %marbud-key-0)))
=^ f3 state (n state (owner-changed:l1 ~marbud deposit-address:naive))
2021-03-18 04:07:21 +03:00
[:(welp f1 f2 f3) state]
::
2021-05-04 21:10:25 +03:00
:: ~litbud is for testing L2 sponsorship
::
++ init-litbud
|= =^state:naive
^- [effects:naive ^state:naive]
:: ~bud should already be spawned, though trying to init ~bud again shouldn't matter i think?
:: =^ f1 state (init-bud state)
=^ f2 state (n state (owner-changed:l1 ~litbud (addr %litbud-key-0)))
=^ f3 state (n state (owner-changed:l1 ~litbud deposit-address:naive))
[:(welp f2 f3) state]
::
2021-05-06 06:25:34 +03:00
:: ~sambud is for testing L1 stars
::
2021-04-23 21:52:48 +03:00
++ init-sambud
|= =^state:naive
^- [effects:naive ^state:naive]
=^ f1 state (init-bud state)
2021-04-23 21:52:48 +03:00
=^ f2 state (n state (owner-changed:l1 ~sambud (addr %sambud-key-0)))
[:(welp f1 f2) state]
::
++ l1
|%
::
:: Azimuth.sol events
::
++ owner-changed
|= [=ship =address]
(log owner-changed:log-names:naive *@ux ship address ~)
::
:: TODO: Activated (not in lib/naive.hoon)
:: TODO: Spawned (not in lib/naive.hoon)
::
++ escape-requested
|= [escapee=ship parent=ship]
(log escape-requested:log-names:naive *@ux escapee parent ~)
::
++ escape-canceled
:: The parent is pinned but not used in lib/naive.hoon for some reason
|= [escapee=ship parent=ship]
(log escape-canceled:log-names:naive *@ux escapee parent ~)
::
++ escape-accepted
|= [escapee=ship parent=ship]
(log escape-accepted:log-names:naive *@ux escapee parent ~)
::
++ lost-sponsor
|= [lost=ship parent=ship]
(log lost-sponsor:log-names:naive *@ux lost parent ~)
::
2021-04-22 20:40:32 +03:00
++ changed-keys
2021-05-12 00:33:57 +03:00
|= [=ship suite=@ encr=@ auth=@ life=@]
2021-04-22 20:40:32 +03:00
=/ keys=@ux
%: can 8
1^life
1^suite
1^auth
1^encr
~
==
(log changed-keys:log-names:naive keys ship ~)
::
++ broke-continuity
|= [=ship rift=@]
(log broke-continuity:log-names:naive rift ship ~)
::
++ changed-spawn-proxy
2021-04-14 21:33:31 +03:00
|= [=ship =address]
(log changed-spawn-proxy:log-names:naive *@ux ship address ~)
::
++ changed-transfer-proxy
|= [=ship =address]
(log changed-transfer-proxy:log-names:naive *@ux ship address ~)
::
++ changed-management-proxy
|= [=ship =address]
(log changed-management-proxy:log-names:naive *@ux ship address ~)
::
++ changed-voting-proxy
|= [=ship =address]
(log changed-voting-proxy:log-names:naive *@ux ship address ~)
::
:: TODO: ChangedDns (lib/naive still has TODOs)
::
:: Ecliptic.sol events
::
++ approval-for-all
|= [owner=address operator=address approved=@]
(log approval-for-all:log-names:naive approved owner operator ~)
::
--
2021-04-09 17:53:15 +03:00
::
2021-03-18 03:27:30 +03:00
--
::
:: Common values used for tests
2021-05-04 20:27:43 +03:00
::
|%
::
++ encr (shax 'You will forget that you ever read this sentence.')
++ auth (shax 'You cant know that this sentence is true.')
++ suit 1
::
++ marbud-own [~marbud %own] ::key %marbud-key-0
++ marbud-spn [~marbud %spawn] :: key %marbud-skey
++ marbud-mgt [~marbud %manage] :: key %marbud-mkey
++ marbud-xfr [~marbud %transfer] :: key %marbud-key-1
2021-05-11 21:28:43 +03:00
::
++ dopbud-own [~dopbud %own] :: key %dopbud-key-0
2021-05-11 21:28:43 +03:00
::
++ litbud-own [~litbud %own] :: key %litbud-key-0
2021-05-11 21:28:43 +03:00
::
++ lt-own [~linnup-torsyx %own] :: key %lt-key-0
++ lt-xfr [~linnup-torsyx %transfer] :: key %lt-key-0
2021-05-04 20:27:43 +03:00
--
::
:: Tests
::
2021-03-18 03:27:30 +03:00
|%
2021-05-20 22:55:24 +03:00
++ test-log ^- tang
%+ expect-eq
!>
:- [%point ~bud %owner (addr %bud-key-0)]~
:_ [~ ~] :_ [~ ~]
:- ~bud
%*(. *point:naive dominion %l1, owner.own (addr %bud-key-0)^0, who.sponsor.net ~bud)
::
!>
%^ naive verifier 1.337 :- *^state:naive
:* %log *@ux *@ux
owner-changed:log-names:naive (@ux ~bud) (addr %bud-key-0) ~
==
::
++ test-deposit ^- tang
%+ expect-eq
!> %l2
::
!>
=| =^state:naive
=^ f state (init-marbud state)
dominion:(~(got by points.state) ~marbud)
::
++ test-batch ^- tang
=/ marbud-transfer [marbud-own %transfer-point (addr %marbud-key-0) |]
=/ marbud-transfer-2 [marbud-own %transfer-point (addr %marbud-key-1) |]
::
%+ expect-eq
!> [(addr %marbud-key-1) 2]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 marbud-transfer %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 1 marbud-transfer-2 %marbud-key-0))
2021-05-20 22:55:24 +03:00
owner.own:(~(got by points.state) ~marbud)
::
++ test-l1-changed-spawn-proxy ^- tang
%+ expect-eq
!> [(addr %bud-skey) 0]
::
!>
=| =^state:naive
=^ f state (init-bud state)
=^ f state (n state (changed-spawn-proxy:l1 ~bud (addr %bud-skey)))
spawn-proxy.own:(~(got by points.state) ~bud)
::
++ test-l1-changed-transfer-proxy ^- tang
%+ expect-eq
!> [(addr %bud-key-1) 0]
::
!>
=| =^state:naive
=^ f state (init-bud state)
=^ f state (n state (changed-transfer-proxy:l1 ~bud (addr %bud-key-1)))
transfer-proxy.own:(~(got by points.state) ~bud)
::
++ test-l1-changed-management-proxy ^- tang
%+ expect-eq
!> [(addr %bud-mkey) 0]
::
!>
=| =^state:naive
=^ f state (init-bud state)
=^ f state (n state (changed-management-proxy:l1 ~bud (addr %bud-mkey)))
management-proxy.own:(~(got by points.state) ~bud)
::
++ test-l1-changed-voting-proxy ^- tang
%+ expect-eq
!> [(addr %bud-vkey) 0]
::
!>
=| =^state:naive
=^ f state (init-bud state)
=^ f state (n state (changed-voting-proxy:l1 ~bud (addr %bud-vkey)))
voting-proxy.own:(~(got by points.state) ~bud)
::
++ test-l1-changed-keys ^- tang
=/ life 1
=/ new-keys [~bud suit encr auth life]
::
%+ expect-eq
!> [suit auth encr]
::
!>
=| =^state:naive
=^ f state (init-bud state)
=^ f state (n state (changed-keys:l1 new-keys))
|1:keys.net:(~(got by points.state) ~bud)
2021-05-01 00:16:53 +03:00
::
2021-05-20 22:55:24 +03:00
++ test-l1-star-escape-requested ^- tang
%+ expect-eq
!> [~ ~wes]
::
!>
=| =^state:naive
=^ f state (init-wes state)
=^ f state (init-sambud state)
=^ f state (n state (escape-requested:l1 ~sambud ~wes))
escape.net:(~(got by points.state) ~sambud)
::
++ test-l1-star-escape-canceled ^- tang
%+ expect-eq
!> ~
::
!>
=| =^state:naive
=^ f state (init-wes state)
=^ f state (init-sambud state)
=^ f state (n state (escape-requested:l1 ~sambud ~wes))
=^ f state (n state (escape-canceled:l1 ~sambud ~wes))
escape.net:(~(got by points.state) ~sambud)
::
++ test-l1-star-adopt-accept ^- tang
%+ expect-eq
!> [~ %.y ~wes]
::
!>
=| =^state:naive
=^ f state (init-wes state)
=^ f state (init-sambud state)
=^ f state (n state (escape-requested:l1 ~sambud ~wes))
=^ f state (n state (escape-accepted:l1 ~sambud ~wes))
[escape.net sponsor.net]:(~(got by points.state) ~sambud)
::
++ test-l1-star-lost-sponsor ^- tang
%+ expect-eq
!> [~ %.n ~bud]
::
!>
=| =^state:naive
=^ f state (init-sambud state)
=^ f state (n state (lost-sponsor:l1 ~sambud ~bud))
[escape.net sponsor.net]:(~(got by points.state) ~sambud)
2021-05-06 06:25:34 +03:00
::
2021-05-06 07:54:13 +03:00
:: TODO: sponsorship tests for l1 planets, and L1/L2 sponsorship tests
2021-05-06 06:25:34 +03:00
::
++ test-l2-set-spawn-proxy ^- tang
=/ marbud-sproxy [marbud-own %set-spawn-proxy (addr %marbud-skey)]
2021-05-06 07:54:13 +03:00
::
%+ expect-eq
!> [(addr %marbud-skey) 0]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 marbud-sproxy %marbud-key-0))
spawn-proxy.own:(~(got by points.state) ~marbud)
::
++ test-l2-set-transfer-proxy ^- tang
=/ marbud-tproxy [marbud-own %set-transfer-proxy (addr %marbud-tkey)]
2021-05-06 07:54:13 +03:00
::
%+ expect-eq
!> [(addr %marbud-tkey) 0]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 marbud-tproxy %marbud-key-0))
transfer-proxy.own:(~(got by points.state) ~marbud)
::
++ test-l2-set-management-proxy ^- tang
=/ marbud-mproxy [marbud-own %set-management-proxy (addr %marbud-mkey)]
2021-05-06 07:54:13 +03:00
::
%+ expect-eq
!> [(addr %marbud-mkey) 0]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 marbud-mproxy %marbud-key-0))
management-proxy.own:(~(got by points.state) ~marbud)
::
++ test-l2-spawn-proxy-deposit ^- tang
2021-04-09 17:53:15 +03:00
%+ expect-eq
!> %spawn
::
!>
=| =^state:naive
=^ f state (init-dopbud state)
2021-04-09 17:53:15 +03:00
dominion:(~(got by points.state) ~dopbud)
2021-04-09 23:22:52 +03:00
::
++ test-marbud-l2-spawn ^- tang
=/ marbud-sproxy [marbud-own %set-spawn-proxy (addr %marbud-skey)]
=/ lt-spawn [%spawn ~linnup-torsyx (addr %lt-key-0)]
::
2021-05-06 18:37:02 +03:00
;: weld
%+ expect-eq
:: Tests l2 spawning with ownership
!> [`@ux`(addr %lt-key-0) 0]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 [marbud-own lt-spawn] %marbud-key-0))
2021-05-06 18:37:02 +03:00
transfer-proxy.own:(~(got by points.state) ~linnup-torsyx)
::
%+ expect-eq
:: Tests l2 spawning with spawn proxy
!> [`@ux`(addr %lt-key-0) 0]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 marbud-sproxy %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 0 [marbud-spn lt-spawn] %marbud-skey))
2021-05-06 18:37:02 +03:00
transfer-proxy.own:(~(got by points.state) ~linnup-torsyx)
==
2021-04-09 23:22:52 +03:00
::
++ test-marbud-l2-double-spawn ^- tang
:: Attempts to spawn the same planet twice, once with ownership and once with spawn proxy
=/ marbud-sproxy [marbud-own %set-spawn-proxy (addr %marbud-skey)]
=/ lt-spawn-0 [marbud-own %spawn ~linnup-torsyx (addr %lt-key-0)]
=/ lt-spawn-1 [marbud-spn %spawn ~linnup-torsyx (addr %lt-key-1)]
2021-05-06 07:54:13 +03:00
::
%- expect-fail
|.
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 marbud-sproxy %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 1 lt-spawn-0 %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 0 lt-spawn-1 %marbud-skey))
state
::
2021-05-06 07:54:13 +03:00
++ test-marbud-l2-change-keys ^- tang
2021-05-12 00:33:57 +03:00
=/ new-keys [%configure-keys suit encr auth |]
=/ marbud-mproxy [marbud-own %set-management-proxy (addr %marbud-mkey)]
2021-05-06 07:54:13 +03:00
::
2021-04-28 22:13:31 +03:00
;: weld
%+ expect-eq
2021-05-04 20:27:43 +03:00
!> [suit auth encr]
2021-04-28 22:13:31 +03:00
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 [marbud-own new-keys] %marbud-key-0))
2021-04-29 23:31:45 +03:00
|1:keys.net:(~(got by points.state) ~marbud)
2021-04-28 22:13:31 +03:00
::
%+ expect-eq
2021-05-04 20:27:43 +03:00
!> [suit auth encr]
2021-04-28 22:13:31 +03:00
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 marbud-mproxy %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 0 [marbud-mgt new-keys] %marbud-mkey))
2021-04-29 23:31:45 +03:00
|1:keys.net:(~(got by points.state) ~marbud)
2021-04-28 22:13:31 +03:00
::
2021-04-28 22:29:20 +03:00
:: TODO: make sure nobody else can change these keys
2021-04-28 22:13:31 +03:00
==
::
2021-05-25 22:05:39 +03:00
++ new-test-marbud-l2-change-keys ^- tang
=/ new-keys [%configure-keys suit encr auth |]
=| =^state:naive
=^ f state (init-marbud state)
=/ expect-state state
:: not sure why this isn't working, maybe check the +increment-nonce code for an example
%+ expect-eq
!> expect-state
::!> state(keys.net:(~(got by points.state ~marbud)) [1 suit auth encr])
::
!>
=^ f state (n state %bat q:(gen-tx 0 [marbud-own new-keys] %marbud-key-1))
state
::
2021-05-04 20:27:43 +03:00
:: TODO: transfer breach via transfer proxy
2021-05-06 18:29:17 +03:00
++ test-marbud-l2-proxies-transfer ^- tang
=/ marbud-new-keys [marbud-own %configure-keys suit encr auth |]
=/ marbud-sproxy [marbud-own %set-spawn-proxy (addr %marbud-skey)]
=/ marbud-mproxy [marbud-own %set-management-proxy (addr %marbud-mkey)]
=/ marbud-tproxy [marbud-own %set-transfer-proxy (addr %marbud-key-1)]
=/ marbud-transfer-breach [marbud-own %transfer-point (addr %marbud-key-1) &]
=/ marbud-transfer-no-breach [marbud-own %transfer-point (addr %marbud-key-1) |]
=/ marbud-xfr-breach [marbud-xfr %transfer-point (addr %marbud-key-1) &]
=/ marbud-xfr-no-breach [marbud-xfr %transfer-point (addr %marbud-key-1) |]
2021-05-06 07:54:13 +03:00
::
;: weld
%+ expect-eq
2021-05-06 18:29:17 +03:00
:: Tests that proxies are reset on transfer with breach
::
!>
:* [(addr %marbud-key-1) 3] :: ownership
[0 0] :: spawn-proxy
[0 0] :: management-proxy
[0 0] :: voting-proxy
[0 1] :: transfer-proxy
==
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 marbud-sproxy %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 1 marbud-mproxy %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 2 marbud-tproxy %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 0 marbud-xfr-breach %marbud-key-1))
^- [[@ @] [@ @] [@ @] [@ @] [@ @]]
own:(~(got by points.state) ~marbud)
::
%+ expect-eq
2021-05-06 18:29:17 +03:00
:: Tests that networking keys are reset on transfer with breach
!>
[0 0 0]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 marbud-new-keys %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 1 marbud-transfer-breach %marbud-key-0))
|1:keys.net:(~(got by points.state) ~marbud)
2021-05-06 18:29:17 +03:00
::
%+ expect-eq
2021-05-06 18:29:17 +03:00
:: Tests that proxies are not reset when transfering without breach
!>
:* [(addr %marbud-key-1) 3] :: ownership
2021-05-06 18:29:17 +03:00
[(addr %marbud-skey) 0] :: spawn-proxy
[(addr %marbud-mkey) 0] :: management-proxy
[0 0] :: voting-proxy
[0 1] :: transfer-proxy
==
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 marbud-sproxy %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 1 marbud-mproxy %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 2 marbud-tproxy %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 0 marbud-xfr-no-breach %marbud-key-1))
^- [[@ @] [@ @] [@ @] [@ @] [@ @]]
own:(~(got by points.state) ~marbud)
::
%+ expect-eq
2021-05-06 18:29:17 +03:00
:: Tests that networking keys are not reset when transfering without breach
!>
2021-05-04 20:27:43 +03:00
[suit auth encr]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 marbud-new-keys %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 1 marbud-transfer-no-breach %marbud-key-0))
|1:keys.net:(~(got by points.state) ~marbud)
2021-05-01 00:16:53 +03:00
==
::
2021-05-04 20:27:43 +03:00
:: TODO: life+rift changes via transfer proxy
::
2021-05-14 21:17:06 +03:00
++ test-marbud-life-rift ^- tang
=/ new-keys-no-reset [marbud-own %configure-keys suit encr auth |]
=/ new-keys-yes-reset [marbud-own %configure-keys suit encr auth &]
=/ zero-keys-no-reset [marbud-own %configure-keys 0 0 0 |]
=/ zero-keys-yes-reset [marbud-own %configure-keys 0 0 0 &]
=/ marbud-transfer-no-breach [marbud-own %transfer-point (addr %marbud-key-1) |]
=/ marbud-transfer-yes-breach [marbud-own %transfer-point (addr %marbud-key-1) &]
2021-05-14 21:17:06 +03:00
=/ marbud-own-1 [~marbud %marbud-key-1 %own]
2021-05-06 07:54:13 +03:00
::
2021-05-01 00:16:53 +03:00
;: weld
%+ expect-eq
2021-05-01 00:42:30 +03:00
:: breach=%.n
2021-05-01 00:16:53 +03:00
!> [0 1] :: [rift life]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 new-keys-no-reset %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 1 new-keys-no-reset %marbud-key-0))
2021-05-01 00:16:53 +03:00
[rift.net life.keys.net]:(~(got by points.state) ~marbud)
::
%+ expect-eq
2021-05-01 00:42:30 +03:00
:: breach=%.y
2021-05-01 00:16:53 +03:00
!> [1 1]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 new-keys-yes-reset %marbud-key-0))
2021-05-04 20:27:43 +03:00
[rift.net life.keys.net]:(~(got by points.state) ~marbud)
::
%+ expect-eq
:: networking keys set incremenets life, reset=%.y
:: then zero keys and transfer, should increment rift but not life
::
!> [2 2]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 new-keys-yes-reset %marbud-key-0)) :: inc life and rift
=^ f state (n state %bat q:(gen-tx 1 zero-keys-no-reset %marbud-key-0)) :: inc life
=^ f state (n state %bat q:(gen-tx 2 zero-keys-yes-reset %marbud-key-0)) :: inc rift
2021-05-01 00:16:53 +03:00
[rift.net life.keys.net]:(~(got by points.state) ~marbud)
2021-05-04 20:27:43 +03:00
::
2021-05-01 00:16:53 +03:00
%+ expect-eq
2021-05-19 18:32:13 +03:00
:: Keep the same keys while breaching via %configure-keys
::
!> [2 1]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 new-keys-yes-reset %marbud-key-0)) :: inc life and rift
=^ f state (n state %bat q:(gen-tx 1 new-keys-yes-reset %marbud-key-0)) :: inc life and rift
2021-05-19 18:32:13 +03:00
[rift.net life.keys.net]:(~(got by points.state) ~marbud)
::
%+ expect-eq
2021-05-04 20:27:43 +03:00
::
2021-05-14 21:17:06 +03:00
!> [1 2]
2021-05-14 20:56:09 +03:00
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 new-keys-no-reset %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 1 marbud-transfer-no-breach %marbud-key-0))
2021-05-14 21:17:06 +03:00
:: TODO: shouldn't the nonce by zero for the next tx?
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 2 zero-keys-yes-reset %marbud-key-1))
2021-05-14 20:56:09 +03:00
[rift.net life.keys.net]:(~(got by points.state) ~marbud)
::
%+ expect-eq
:: set networking keys, then transfer and set networking keys with breach
::
2021-05-14 21:17:06 +03:00
!> [1 3]
2021-05-14 20:56:09 +03:00
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 new-keys-no-reset %marbud-key-0)) :: inc life
=^ f state (n state %bat q:(gen-tx 1 marbud-transfer-yes-breach %marbud-key-0)) :: inc life and rift
2021-05-14 20:56:09 +03:00
:: TODO: shouldn't the nonce by zero for the next tx?
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 2 new-keys-no-reset %marbud-key-1)) ::inc life
2021-05-14 20:56:09 +03:00
[rift.net life.keys.net]:(~(got by points.state) ~marbud)
::
%+ expect-eq
2021-05-04 20:27:43 +03:00
:: networking keys set incremenets life, reset=%.y
:: then zero keys and transfer, should increment rift but not life
:: TODO: transferring and reset with already zeroed keys ought to incr rift but not life, right?
:: but currently the transfer w/ reset increments both life and rift, despite keys already being 0
::
!> [2 2]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 new-keys-yes-reset %marbud-key-0)) :: inc life and rift
=^ f state (n state %bat q:(gen-tx 1 zero-keys-no-reset %marbud-key-0)) :: inc life
=^ f state (n state %bat q:(gen-tx 2 marbud-transfer-yes-breach %marbud-key-0)) :: inc rift
2021-05-04 20:27:43 +03:00
[rift.net life.keys.net]:(~(got by points.state) ~marbud)
::
==
::
++ test-dopbud-l2-spawn ^- tang
=/ pp-spawn [dopbud-own %spawn ~palsep-picdun (addr %pp-key-0)]
2021-05-06 07:54:13 +03:00
::
2021-04-09 23:22:52 +03:00
%+ expect-eq
!> [`@ux`(addr %pp-key-0) 0]
::
2021-04-09 23:22:52 +03:00
!>
=| =^state:naive
=^ f state (init-dopbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 pp-spawn %dopbud-key-0))
2021-04-09 23:22:52 +03:00
transfer-proxy.own:(~(got by points.state) ~palsep-picdun)
2021-04-10 00:06:50 +03:00
::
++ test-dopbud-l2-spawn-after-transfer ^- tang
=/ pp-spawn [dopbud-own %spawn ~palsep-picdun (addr %pp-key-0)]
=/ lr-spawn [dopbud-own %spawn ~laclur-rachul (addr %lr-key-0)]
2021-05-06 07:54:13 +03:00
::
%+ expect-eq
!> [`@ux`(addr %lr-key-0) 0]
::
!>
=| =^state:naive
=^ f state (init-dopbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 pp-spawn %dopbud-key-0))
=^ f state (n state (owner-changed:l1 ~dopbud (addr %dopbud-key-1)))
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 1 lr-spawn %dopbud-key-1))
transfer-proxy.own:(~(got by points.state) ~laclur-rachul)
::
2021-04-23 21:52:48 +03:00
:: ++ test-sambud-double-spawn ^- tang
:: ::
:: :: TODO: Not sure of the right way to write this test yet. Current iteration
:: :: doesn't even compile
:: ::
:: %- expect-fail
:: |.
:: ?<
:: ?= [`@ux`(addr %ld-key-1) 0]
:: =| =^state:naive
:: =^ f state (init-sambud state)
:: =^ f state (n state (owner-changed:l1 ~lisdur-fodrys (addr %ld-key-0)))
:: =^ f state (n state (changed-spawn-proxy:l1 ~sambud deposit-address:naive))
:: =^ f state (n state %bat q:(spawn:l2 0 ~sambud %sambud-key-0 %own ~lisdur-fodrys (addr %ld-key-1)))
2021-04-23 21:52:48 +03:00
:: transfer-proxy.own:(~(got by points.state) ~lisdur-fodrys)
:: %.n
::
:: ++ test-sambud-double-spawn-w-proxy ^- tang
:: ::
:: :: Same confusion as above
:: ::
:: %- expect-fail
:: |.
:: =| =^state:naive
:: =^ f state (init-sambud state)
:: =^ f state (n state (owner-changed:l1 ~lisdur-fodrys (addr %ld-key-0)))
:: =^ f state (n state (owner-changed:l1 ~sambud deposit-address:naive))
:: =^ f state (n state %bat q:(spawn:l2 0 ~sambud %sambud-key-0 %own ~lisdur-fodrys (addr %ld-key-1)))
2021-04-23 21:52:48 +03:00
:: state
::
++ test-linnup-torsyx-l2-transfer-ownership ^- tang
=/ lt-spawn [marbud-own %spawn ~linnup-torsyx (addr %lt-key-0)]
=/ lt-transfer-yes-breach [%transfer-point (addr %lt-key-0) &]
2021-05-06 07:54:13 +03:00
::
%+ expect-eq
!> [`@ux`(addr %lt-key-0) 0]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 lt-spawn %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 0 [lt-xfr lt-transfer-yes-breach] %lt-key-0))
owner.own:(~(got by points.state) ~linnup-torsyx)
::
++ test-palsep-picdun-l2-transfer-ownership ^- tang
=/ pp-xfr [~palsep-picdun %transfer]
=/ pp-spawn [dopbud-own %spawn ~palsep-picdun (addr %pp-key-0)]
=/ pp-transfer-yes-breach [pp-xfr %transfer-point (addr %pp-key-0) &]
%+ expect-eq
!> [`@ux`(addr %pp-key-0) 0]
::
!>
=| =^state:naive
=^ f state (init-dopbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 pp-spawn %dopbud-key-0))
=^ f state (n state %bat q:(gen-tx 0 pp-transfer-yes-breach %pp-key-0))
owner.own:(~(got by points.state) ~palsep-picdun)
::
2021-05-01 00:42:30 +03:00
++ test-linnup-torsyx-l2-escape-request ^- tang
=/ lt-spawn [marbud-own %spawn ~linnup-torsyx (addr %lt-key-0)]
=/ lt-transfer-yes-breach [lt-xfr %transfer-point (addr %lt-key-0) &]
2021-05-06 07:54:13 +03:00
::
2021-05-01 00:42:30 +03:00
%+ expect-eq
2021-05-04 21:10:25 +03:00
!> [~ ~litbud]
2021-05-01 00:42:30 +03:00
::
!>
=| =^state:naive
=^ f state (init-marbud state)
2021-05-04 21:10:25 +03:00
=^ f state (init-litbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 lt-spawn %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 0 lt-transfer-yes-breach %lt-key-0))
=^ f state (n state %bat q:(gen-tx 0 [lt-own [%escape ~litbud]] %lt-key-0))
2021-05-01 00:42:30 +03:00
escape.net:(~(got by points.state) ~linnup-torsyx)
::
2021-05-04 21:10:25 +03:00
++ test-linnup-torsyx-l2-cancel-escape-request ^- tang
=/ lt-spawn [marbud-own %spawn ~linnup-torsyx (addr %lt-key-0)]
=/ lt-transfer-yes-breach [lt-xfr %transfer-point (addr %lt-key-0) &]
2021-05-06 07:54:13 +03:00
::
2021-05-04 21:10:25 +03:00
%+ expect-eq
!> ~
::
!>
=| =^state:naive
=^ f state (init-marbud state)
=^ f state (init-litbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 lt-spawn %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 0 lt-transfer-yes-breach %lt-key-0))
=^ f state (n state %bat q:(gen-tx 0 [lt-own [%escape ~litbud]] %lt-key-0))
=^ f state (n state %bat q:(gen-tx 1 [lt-own [%cancel-escape ~litbud]] %lt-key-0))
2021-05-04 21:10:25 +03:00
escape.net:(~(got by points.state) ~linnup-torsyx)
::
2021-05-04 21:11:19 +03:00
++ test-linnup-torsyx-l2-adopt-accept ^- tang
=/ lt-spawn [marbud-own %spawn ~linnup-torsyx (addr %lt-key-0)]
=/ lt-transfer-yes-breach [lt-xfr %transfer-point (addr %lt-key-0) &]
2021-05-06 07:54:13 +03:00
::
2021-05-04 21:10:25 +03:00
%+ expect-eq
!> [~ %.y ~litbud]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
=^ f state (init-litbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 lt-spawn %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 0 lt-transfer-yes-breach %lt-key-0))
=^ f state (n state %bat q:(gen-tx 0 [lt-own [%escape ~litbud]] %lt-key-0))
=^ f state (n state %bat q:(gen-tx 0 [litbud-own [%adopt ~linnup-torsyx]] %litbud-key-0))
2021-05-04 21:10:25 +03:00
[escape.net sponsor.net]:(~(got by points.state) ~linnup-torsyx)
::
2021-05-04 21:11:19 +03:00
++ test-linnup-torsyx-l2-adopt-reject ^- tang
2021-05-04 21:10:25 +03:00
:: TODO: at the moment the default sponsor is always ~zod, but it should probably
:: be ~marbud here
=/ lt-spawn [marbud-own %spawn ~linnup-torsyx (addr %lt-key-0)]
=/ lt-transfer-yes-breach [lt-xfr %transfer-point (addr %lt-key-0) &]
2021-05-06 07:54:13 +03:00
::
2021-05-04 21:10:25 +03:00
%+ expect-eq
!> ~
::
!>
=| =^state:naive
=^ f state (init-marbud state)
=^ f state (init-litbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 lt-spawn %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 0 lt-transfer-yes-breach %lt-key-0))
=^ f state (n state %bat q:(gen-tx 0 [lt-own [%escape ~litbud]] %lt-key-0))
=^ f state (n state %bat q:(gen-tx 0 [litbud-own [%reject ~linnup-torsyx]] %litbud-key-0))
2021-05-04 21:10:25 +03:00
escape.net:(~(got by points.state) ~linnup-torsyx)
::
2021-05-04 21:11:19 +03:00
++ test-linnup-torsyx-l2-detach ^- tang
=/ lt-spawn [marbud-own %spawn ~linnup-torsyx (addr %lt-key-0)]
=/ lt-transfer-yes-breach [lt-xfr %transfer-point (addr %lt-key-0) &]
2021-05-06 07:54:13 +03:00
::
2021-05-04 21:10:25 +03:00
%+ expect-eq
!> [~ %.n ~marbud]
::
!>
=| =^state:naive
=^ f state (init-marbud state)
=^ f state (init-litbud state)
2021-05-25 22:05:39 +03:00
=^ f state (n state %bat q:(gen-tx 0 lt-spawn %marbud-key-0))
=^ f state (n state %bat q:(gen-tx 0 lt-transfer-yes-breach %lt-key-0))
=^ f state (n state %bat q:(gen-tx 1 [marbud-own [%detach ~linnup-torsyx]] %marbud-key-0))
2021-05-04 21:10:25 +03:00
[escape.net sponsor.net]:(~(got by points.state) ~linnup-torsyx)
::
:: TODO: signature format changed; regenerate
::
:: ++ test-metamask-signature ^- tang
:: =/ meta-owner=address
:: (hex-to-num:ethereum '0xb026b0AA6e686F2386051b31A03E5fB95513e1c0')
:: =/ tx 0x123.0000.0102.0a00.0001.0200
:: =/ sig
:: %- hex-to-num:ethereum
:: :: Must reverse endianness of tx to sign in metamask
:: ::
:: %^ cat 3
:: '0x5b85936ab7b9db8d72416648e6eb1b844a4545ddb7c7c646a74bc3a4fb001a2'
:: '8583bf12ca837b289036a6cc9e6359ed07dda2b87929b5dd7189a3057a395341f1c'
:: ::
:: %+ expect-eq
:: !> [0x123 0]
:: ::
:: !>
:: =| =^state:naive
:: =^ f state (init-marbud state)
:: :: =^ f state (n state %bat q:(transfer-point:l2 0 ~marbud (key ~marbud) %own &))
:: :: =^ f state (n state %bat q:(set-transfer-proxy:l2 1 ~marbud %own 0x123))
:: =^ f state
:: %^ n state %bat
:: q:(transfer-point:l2 0 ~marbud %marbud-key-0 meta-owner %own &)
:: =^ f state (n state %bat (cat 3 sig tx))
:: transfer-proxy.own:(~(got by points.state) ~marbud)
2021-03-18 03:27:30 +03:00
--