mirror of
https://github.com/status-im/EIPs.git
synced 2025-01-14 00:45:05 +00:00
commit
211a436315
79
EIPS/eip-801.md
Normal file
79
EIPS/eip-801.md
Normal file
@ -0,0 +1,79 @@
|
||||
## Preamble
|
||||
|
||||
EIP: 801
|
||||
Title: ERC-801 Canary Standard
|
||||
Author: ligi <ligi@ligi.de>
|
||||
Type: Standard
|
||||
Category: ERC
|
||||
Status: Draft
|
||||
Created: 2017-12-16
|
||||
|
||||
|
||||
## Simple Summary
|
||||
|
||||
A standard interface for canary contracts.
|
||||
|
||||
## Abstract
|
||||
|
||||
The following standard allows the implementation of canaries within contracts.
|
||||
This standard provides basic functionality to check if a canary is alive, keeping the canary alive and optionally manage feeders.
|
||||
|
||||
## Motivation
|
||||
|
||||
The canary can e.g. be used as a [warrant canary](https://en.wikipedia.org/wiki/Warrant_canary).
|
||||
A standard interface allows other applications to easily interface with canaries on Ethereum - e.g. for visualizing the state, automated alarms, applications to feed the canary or contracts (e.g. insurance) that use the state.
|
||||
|
||||
## Specification
|
||||
|
||||
### Methods
|
||||
|
||||
#### isAlive()
|
||||
|
||||
Returns if the canary was fed properly to signal e.g. that no warrant was received.
|
||||
|
||||
``` js
|
||||
function isAlive() constant returns (bool alive)
|
||||
```
|
||||
|
||||
#### getBlockOfDeath()
|
||||
|
||||
Returns the block the canary died.
|
||||
Throws if the canary is alive.
|
||||
|
||||
``` js
|
||||
function getBlockOfDeath() constant returns (uint256 block)
|
||||
```
|
||||
|
||||
#### getType()
|
||||
|
||||
Returns the type of the canary:
|
||||
|
||||
* `1` = Simple (just the pure interface as defined in this ERC)
|
||||
* `2` = Single feeder (as defined in ERC-TBD)
|
||||
* `3` = Single feeder with bad food (as defined in ERC-TBD)
|
||||
* `4` = Multiple feeders (as defined in ERC-TBD)
|
||||
* `5` = Multiple mandatory feeders (as defined in ERC-TBD)
|
||||
* `6` = IOT (as defined in ERC-TBD)
|
||||
|
||||
`1` might also be used for a special purpose contract that does not need a special type but still wants to expose the functions and provide events as defined in this ERC.
|
||||
|
||||
``` js
|
||||
function getType() constant returns (uint8 type)
|
||||
```
|
||||
|
||||
### Events
|
||||
|
||||
#### RIP
|
||||
|
||||
MUST trigger when the contract is called the first time after the canary died.
|
||||
|
||||
``` js
|
||||
event RIP()
|
||||
```
|
||||
|
||||
## Implementation
|
||||
|
||||
TODO
|
||||
|
||||
## Copyright
|
||||
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
|
Loading…
x
Reference in New Issue
Block a user