The shareapp is a application that built on Ethereum. You can share anything if you want, and then you can query,rent and return the shared Object. Now we can see our function including create, display, query by id, rent and return the Object. More functions will be following.
In our testing program, we need two accounts. one for creator, the other is the renter. And we used geth and truffle.
The interface of Query by name and by id:
We use geth client, so we need install some tools. Go, Geth, Nodejs and Truffle
The first block in blockchain is called "genesis block", our example's genesis.json is:
{
"nonce": "0x0000000000000042", "timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x0", "gasLimit": "0x8000000", "difficulty": "0x400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333", "alloc":
{
"0x3177bf1a6ccf86ff6b945a9964fd7d88534b0fa9":
{ "balance": "20000000000000000000" }
}
}
We run our program in our private network. First, we need to generate genesis block:
> geth --datadir <your datadir> init <path/genesis.json>
your datadir is the path you want store your data, and path/genesis.json is the way to the file genesis.json. Then, launch the Javascript Console:
> geth --identity "asurily" --rpc --rpccorsdomain "*" --datadir ~/etherTest --port "30303" --nodiscover --rpcapi "db,eth,net,web3" --networkid 1999 console 2>> ~/etherTest/geth.log
A nodeInfo of mine
enode: "enode://f9f52442f0bb637d1d6a6d72e3801aadfa38baf1bfb2f45c60348f8b2daddaaca10727c4944a5dd0ff2b6bcdd0528b906fe48a4b92a4476ea0872f1fce541ff8@[::]:30303?discport=0"
In our test program, we need two accounts. One for create the sharing Object, the other is the renter.
> personal.newAccount("123")
["0x3177bf1a6ccf86ff6b945a9964fd7d88534b0fa9"]
> personal.newAccount("123")
["0xa65bf431f4f07a22296dc93a7e6f4fe57642bee6"]
Now, we had created two accounts, the password were 123, just for example. By default, the first account is the coinbase, so now we can mine to get balances.
> miner.start()
We used truffle, so you first need to install truffle.
$ npm install -g truffle
Because we need some node_modules, so we first need to install these according to the package.json file, using this command:
$ npm install
Now, change directory into the application, open a terminal. Then depoly our contract into our private network(need mine):
$ truffle migrate --reset
And then, run our app.
$ npm run dev
> truffle-init-webpack@0.0.1 dev /home/hepu/Desktop/ethereum/ShareApp
> webpack-dev-server
Project is running at http://localhost:8080/
webpack output is served from /
Hash: 1ca9001233ce17a54582
Version: webpack 2.6.1
Time: 4061ms
Asset Size Chunks Chunk Names
app.js 1.37 MB 0 [emitted] [big] main
index.html 6.57 kB [emitted]
chunk {0} app.js (main) 1.34 MB [entry] [rendered]
[19] ./~/bignumber.js/bignumber.js 95.1 kB {0} [built]
[82] ./~/web3/index.js 193 bytes {0} [built]
[86] ./app/javascripts/app.js 10.9 kB {0} [built]
[87] (webpack)-dev-server/client?http://localhost:8080 5.68 kB {0} [built]
[88] ./build/contracts/ShareApp.json 13.4 kB {0} [built]
[129] ./~/punycode/punycode.js 14.7 kB {0} [built]
[132] ./~/querystring-es3/index.js 127 bytes {0} [built]
[160] ./~/strip-ansi/index.js 161 bytes {0} [built]
[163] ./app/stylesheets/app.css 905 bytes {0} [built]
[170] ./~/truffle-contract/index.js 2.64 kB {0} [built]
[205] ./~/url/url.js 23.3 kB {0} [built]
[240] (webpack)-dev-server/client/overlay.js 3.73 kB {0} [built]
[241] (webpack)-dev-server/client/socket.js 897 bytes {0} [built]
[243] (webpack)/hot/emitter.js 77 bytes {0} [built]
[245] multi (webpack)-dev-server/client?http://localhost:8080 ./app/javascripts/app.js 40 bytes {0} [built]
+ 231 hidden modules
webpack: Compiled successfully.
Finally, run localhost:8080 in our browser, we can use our app.