nucypher/README.md

27 lines
1.3 KiB
Markdown

# NuCypher KMS Ethereum
Ethereum (solidity) code for nucypher-kms, consists contracts and python classes for miners and clients.
Part of contracts was copied from [OpenZeppelin](https://github.com/OpenZeppelin/zeppelin-solidity) repo.
The basis is built on the [Populus](https://github.com/ethereum/populus) framework.
# Install
See [setup.sh](setup.sh)
# Periods structure
Most of the function in contracts works by periods. For example, stake in the contract `Escrow` is discretely unlocked by periods.
Period is calculating using block.timestamp in getCurrentPeriod() function (`Miner.sol`). Each period is 24 hours. So result of getting locked tokens in one day will be the same.
# Main contracts
* Token contract
`NuCypherKMSToken` contract is ERC20 token with additional function - burn own tokens (only for owners)
* Miner contract
`Escrow` contract holds stake from miners, store information about miners activity and assigns a reward for participating in NuCypher KMS network
* Client contract
`PolicyManager` contract holds policies fee and distributes fee by periods
# Python client
TBD
# Solidity libraries
* `LinkedList` library is structure of linked list for address data type
* `Dispatcher` contract is proxy which used for updating versions of any contract. See [README.MD](nkms_eth/project/contracts/proxy/README.MD)