@etherisc/gif-next 0.0.2-4cff82c-004 → 0.0.2-4cff82c-760
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
# State Machines
|
|
2
|
-
|
|
3
|
-
Most GIF objects have a life cycle defined by a state machine.
|
|
4
|
-
|
|
5
|
-
For each object type the set of possible states is defined together with its initial state and the set of valid state transitions.
|
|
6
|
-
|
|
7
|
-
## Object Types without States
|
|
8
|
-
|
|
9
|
-
* Protocol
|
|
10
|
-
* Chains
|
|
11
|
-
* Registries (both chain and main registry)
|
|
12
|
-
|
|
13
|
-
## Object Types with States
|
|
14
|
-
|
|
15
|
-
* Tokens
|
|
16
|
-
* Instances
|
|
17
|
-
* Products
|
|
18
|
-
* Oracles
|
|
19
|
-
* Pools
|
|
20
|
-
* Bundles
|
|
21
|
-
* Policies
|
|
22
|
-
* Claim (non-NFT)
|
|
23
|
-
* Payout (non-NFT)
|
|
24
|
-
|
|
25
|
-
### Simple State Machine
|
|
26
|
-
|
|
27
|
-
Valid states
|
|
28
|
-
|
|
29
|
-
* Active (initial state)
|
|
30
|
-
* Paused
|
|
31
|
-
* Archived (final state)
|
|
32
|
-
|
|
33
|
-
Valid state transitions:
|
|
34
|
-
|
|
35
|
-
* Active -> Paused
|
|
36
|
-
* Paused -> Active
|
|
37
|
-
* Paused -> Archived
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
Candidate object types for simple state machine
|
|
41
|
-
|
|
42
|
-
* Token
|
|
43
|
-
* Instance
|
|
44
|
-
* Product
|
|
45
|
-
* Oracle
|
|
46
|
-
* Pool
|
|
47
|
-
|
|
48
|
-
To discuss:
|
|
49
|
-
|
|
50
|
-
* Archived is final state
|
|
51
|
-
* What mechanism should exist to revert an unintended transition to 'Archived' state. Should there be such a mechanism?
|
|
52
|
-
* What mechanism should exist when the NFT of such an object is burned prematurely. Should there be such a mechanism
|
|
53
|
-
|
|
54
|
-
### Bundle State Machine
|
|
55
|
-
|
|
56
|
-
Valid states
|
|
57
|
-
|
|
58
|
-
* Active (initial state)
|
|
59
|
-
* Paused
|
|
60
|
-
* Expired (implicit state)
|
|
61
|
-
* Closed (final state)
|
|
62
|
-
|
|
63
|
-
Expired is not an explicit state.
|
|
64
|
-
A bundle is expired for block.timestamp >= expiredAt
|
|
65
|
-
|
|
66
|
-
### Policy State Machine
|
|
67
|
-
|
|
68
|
-
Valid states
|
|
69
|
-
|
|
70
|
-
* Applied (initial state)
|
|
71
|
-
* Revoked (final state)
|
|
72
|
-
* Declined (final state)
|
|
73
|
-
* Active
|
|
74
|
-
* Expired (implicit state)
|
|
75
|
-
* Closed (final state)
|
|
76
|
-
|
|
77
|
-
Expired is not an explicit state.
|
|
78
|
-
A policy is expired for block.timestamp >= expiredAt
|
|
79
|
-
|
|
80
|
-
To discuss:
|
|
81
|
-
|
|
82
|
-
* Should 'Closed' be less explicit using a closedAt state variable?
|
|
83
|
-
* Or even more lighweight? ie. block.timestamp >= expiredAt and no open claims
|
|
84
|
-
|
|
85
|
-
Valid state transitions:
|
|
86
|
-
|
|
87
|
-
* Applied -> Revoked
|
|
88
|
-
* Applied -> Declined
|
|
89
|
-
* Applied -> Active
|
|
90
|
-
* Active -> Closed (needs to be expired)
|
|
91
|
-
|
|
92
|
-
### Claim State Machine
|
|
93
|
-
|
|
94
|
-
Valid states
|
|
95
|
-
* Applied (initial state)
|
|
96
|
-
* Confirmed
|
|
97
|
-
* Declined (final state)
|
|
98
|
-
* Closed (final state)
|
|
99
|
-
|
|
100
|
-
Valid state transitions:
|
|
101
|
-
* Applied -> Confirmed
|
|
102
|
-
* Applied -> Declined
|
|
103
|
-
* Confirmed -> Closed
|
|
104
|
-
|
|
105
|
-
### Payout State Machine
|
|
106
|
-
|
|
107
|
-
Valid states
|
|
108
|
-
* Expected
|
|
109
|
-
* PaidOut
|
|
110
|
-
|
|
111
|
-
Valid state transitions:
|
|
112
|
-
* Expected -> PaidOut
|