more basic readme

This commit is contained in:
bumi 2018-03-12 17:47:31 +01:00
parent 9efe30afda
commit 9deb7c2c7f

View File

@ -1,9 +1,58 @@
# Kredits
This repository contains all the contracts for Kredits as a [truffle framework](http://truffleframework.com/) project.
## Development ## Development
For local development it is recommended to use [ganache-cli](https://github.com/trufflesuite/ganache-cli) to run a local development chain. For local development it is recommended to use [ganache-cli](https://github.com/trufflesuite/ganache-cli) (or the [ganache GUI](http://truffleframework.com/ganache/) to run a local development chain.
Using the ganache simulator no full Ethereum node is required.
We default to port 7545 for development to not get in conflict with the default Ethereum RPC port. We default to the port 7545 for development to not get in conflict with the default Ethereum RPC port. Have a look at `ganache-cli` for more configuration options.
Run your ganache simulator before using Kredits locally:
$ ganache-cli -p 7545
### Truffle console
Truffle comes with a simple REPL to interact with the Smart Contracts. Have a look at the [documentation here](http://truffleframework.com/docs/getting_started/console)
NOTE: There are promisses, have a look at the examples:
``javascript
Token.deployed().then(function(token) {
token.totalSupply.call().then(function(value) {
console.log(value.toString());
})
});
```
Also please be aware of the differences between web3.js 0.2x.x and [1.x.x](https://web3js.readthedocs.io/en/1.0/) - [web3 repo](https://github.com/ethereum/web3.js/)
## Contract Deployment
Truffle uses migration scripts to deploy contract to various networks. Have a look at the `migrations` folder for those.
The Ethereum nodes for the different networks need to be configured in `truffle.js`.
Run the truffle migration scripts:
$ truffle deploy
$ truffle deploy --network=<network config from truffle.js>
Truffle keeps track of already executed migration scripts. To reset the migration use the `--reset` option
$ truffle migrate --reset
Migration scripts can also be run from within `truffle console` or `truffle develop`
## Upgradeable contracts
Some of the contracts use upgradability ideas from [zeppelinos](https://github.com/zeppelinos/labs) (see `contracts/upgradable`).
The basic idea is to have a Registry contract that knows about the current implementations and a Proxy contract that uses `delegatecall` to call the current implementation.
That means the Proxy contract holds the storage and the address of that one does not change but the actuall implemenation is managed through the Registry.
To deploy a new version a new contract is deployed then the version is registered (`addVersion()`) in the Registry and on the Proxy contract is "upgraded" (`upgradeTo()`) to the new version.
$ ganache-cli -p 7545