【項目目標】php
開發一個去中介化的租房EOS DAPP,實現租客與房東互贏。html
【項目需求】前端
一、創建本地節點,建立錢包、加載biod合約、建立代幣分配帳戶。html5
二、部署eosjs項目,提供建立代幣合約、建立帳戶(可批量)、轉帳、查詢代幣餘額等API。node
三、WEB前端爲一個簡易租房界面,能夠瀏覽租房信息,會員註冊(贈送代幣)後,能夠預定看房,看房後能夠對房源打分(贈送代幣),租房後能夠對房源打分(贈送代幣),後臺房東能夠發佈出租房源(贈送代幣),翻轉房源狀態(贈送代幣),代幣在平臺增值後,能夠作爲房租支付或抵押。ios
四、本項目代幣名稱爲:BLR(BlockRent的簡寫)git
【測試環境】github
在Win7下安裝的VMWare10,在VMWare10中安裝Ubuntu18.0四、Docker18.03.1-ce、EOS DAWN v1.0.8,環境看起來有點兜轉,就暫且用作測試吧。sql
一、啓動節點chrome
$ sudo docker run --rm--name eosio -d -p 8888:8888 -p 9876:9876 -v /tmp/work:/work -v/tmp/eosio/data:/mnt/dev/data -v /tmp/eosio/config:/mnt/dev/configeosio/eos-dev /bin/bash -c "nodeos-e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::wallet_plugin--plugin eosio::producer_plugin --plugin eosio::history_plugin --plugineosio::chain_api_plugin --plugin eosio::history_api_plugin --plugineosio::http_plugin -d /mnt/dev/data --config-dir /mnt/dev/config--http-server-address=0.0.0.0:8888 --access-control-allow-origin=*--contracts-console" $ docker exec -it eosio/bin/bash
二、查找eosio公私鑰
在當前路徑下,咱們能夠打開config.ini文件,查找signature-provider,便可找到eosio公私鑰:
EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
筆者注:在DAWNv1.0.2時,公私鑰是能夠獨立於錢包建立帳戶操做的,但v1.0.5後就必須先將私鑰導入到錢包裏才能操做,因此咱們早早地就把公私鑰複製下來,準備好接下來的操做。
三、建立錢包
cleos wallet create -nblockrent_wallet PW5KPFSWL3YfgRPVaER9EjoScBk1Afdcx6T3RVWHCqpjfuuySmC7G
四、將eosio帳戶密鑰導入錢包
cleos wallet import -nblockrent_wallet 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
五、建立bios合約
cleos set contract eosiocontracts/eosio.bios -p eosio #返回的交易地址 cd15f3ee17c043f202f801444e73b69165d0becd6d153ad8e41c870e88421a87
六、建立KEY
# 建立合約帳戶blockrent111 cleos create key Private key:5JhDyR6zNDifzoJPE5MnfxvLvbHdXTSBuKzaXEr82rL6ChoRyvL Public key:EOS5JPDqzVDQ8kCo6AWdxhKpynmJsWUfbwBiaDs2fMNhAnEDSd525 # 團隊及基金會blockrent222 cleos create key Private key:5KQYJzZAR8CgrLW3x7vkhm86NKxziDoZn2JJKhdbTbH9WjTdGZ8 Public key: EOS6t22TsDrrSnmkDv2pv4jagZMxnw4Hc8pQcmTo8476inymwqn9d # 社區培養及推廣blockrent333 cleos create key Private key:5JKqGKqPkCtQc8EHy5paZ9KJKnRKY4XEukWtVn1w7HT9ZHZGip5 Public key:EOS5qGrpjdFR647sbec1sQyqvnQ8hrUZJGR1t24EGue1HUJKWLEes # 激勵池blockrent444 cleos create key Private key:5JQ85e4AMagc3D43dvH6ngFG6ak6ubVamweMhHcTxBjKTfSWGXP Public key:EOS63yTyuJnbgoCVDXkrgjG9SGCSxBLUAYscZWQf4NaLV7oTkM2ex # 定向邀約機構方blockrent555 cleos create key Private key:5JmQQpEGgXBD33g1yy4bFfaPfsQZrwqU9UwUKwphC1hZ5WqBsXL Public key: EOS7X9EPbQdGxUMfN7bXTQz1cUSWxwpGjTPt8yGsiFxuDfFAWkhS8
七、導入KEY到錢包
cleos wallet import -nblockrent_wallet 5KQYJzZAR8CgrLW3x7vkhm86NKxziDoZn2JJKhdbTbH9WjTdGZ8 cleos wallet import -nblockrent_wallet 5JKqGKqPkCtQc8EHy5paZ9KJKnRKY4XEukWtVn1w7HT9ZHZGip5 cleos wallet import -nblockrent_wallet 5JQ85e4AMagc3D43dvH6ngFG6ak6ubVamweMhHcTxBjKTfSWGXP cleos wallet import -nblockrent_wallet 5JmQQpEGgXBD33g1yy4bFfaPfsQZrwqU9UwUKwphC1hZ5WqBsXL
八、建立帳戶
cleos create account eosioblockrent111 EOS5JPDqzVDQ8kCo6AWdxhKpynmJsWUfbwBiaDs2fMNhAnEDSd525 #須要EOS抵押 cleos create accountblockrent111 blockrent222 EOS6t22TsDrrSnmkDv2pv4jagZMxnw4Hc8pQcmTo8476inymwqn9d cleos create accountblockrent111 blockrent333 EOS5qGrpjdFR647sbec1sQyqvnQ8hrUZJGR1t24EGue1HUJKWLEes cleos create accountblockrent111 blockrent444 EOS63yTyuJnbgoCVDXkrgjG9SGCSxBLUAYscZWQf4NaLV7oTkM2ex cleos create accountblockrent111 blockrent555 EOS7X9EPbQdGxUMfN7bXTQz1cUSWxwpGjTPt8yGsiFxuDfFAWkhS8
咱們能夠經過cleosget account <帳戶名> -j來查看一下帳戶詳細信息,-j參數表示輸出json格式。
九、建立代幣合約BLR
cleos set contractblockrent111 contracts/eosio.token/ -p blockrent111 # cleos push actionblockrent111 create '["eosio", "1000000000.0000 BLR", 0, 0,0]' -p blockrent111 cleos push actionblockrent111 create '["blockrent111", "1000000000.0000BLR", 0, 0, 0]' -p blockrent111
十、發行代幣
在產品設計階段,咱們約定的激勵分配是這樣的:
· 總髮行 10億BLR · 團隊及基金會(blockrent222) 25%=250000000.0000 BLR · 社區培養及推廣(blockrent333) 15%=150000000.0000 BLR · 激勵池(blockrent444) 40%=400000000.0000 BLR · 定向邀約機構方(blockrent555) 20%=200000000.0000 BLR cleos push actionblockrent111 issue '["blockrent222", "250000000.0000 BLR","給blockrent222發行25%"]' -pblockrent111 cleos push actionblockrent111 issue '["blockrent333", "150000000.0000 BLR","給blockrent333發行15%"]' -pblockrent111 cleos push actionblockrent111 issue '["blockrent444", "400000000.0000 BLR","給blockrent444發行40%"]' -pblockrent111 cleos push actionblockrent111 issue '["blockrent555", "200000000.0000 BLR","給blockrent555發行20%"]' -pblockrent111
到目前爲止,咱們創建一條本地私有區塊鏈,建立了一個代幣合約BLR,並按激勵分配規則發行到了4個分帳戶,在接下來的開發中,咱們將使用激勵池blockrent444中的餘額來進行交易。
一、克隆eosjs項目代碼
此處項目代碼部署在運行着本地節點的Ubuntu系統中,若是是在生產環境中,能夠單獨部署這個項目,對外有一個獨立IP可訪問便可。
cd ~/ git clone https://github.com/luoxiaohui/eos4node.git 訪問 http://localhost:8888/v1/chain/get_info 獲取本地節點信息,localhost 也能夠換成局域網IP地址,複製chain_id字段值。 找到~/eos4node/app/controller/home.js文件,根據本地節點數據不一樣,作以下修改: 13行處const pk = '***',修改成 blockrent444 帳戶私鑰。 20行處const eosServer ='***'註釋掉,啓用22行本地服務地址。 28行處const mainAccount = '***',修改爲blockrent444。 45行處const eos = Eos(...);,其中chainId修改成chain_id字段值,如cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f。 295行處myaccount.create...,可修改代幣名稱和總髮行量。 保存並上傳。
二、運行項目,開啓服務
cd ~/eos4node # 下載node_modules須要等待一段時間,也能夠提示下載 $ npm i $ npm run dev > eos4node@1.0.0 dev/home/simon/eos4node > egg-bin dev 2018-07-09 17:45:36,209INFO 24999 [master] node version v8.11.3 2018-07-09 17:45:36,211INFO 24999 [master] egg version 2.9.1 2018-07-09 17:45:36,664INFO 24999 [master] agent_worker#1:25005 started (450ms) 2018-07-09 17:45:37,580INFO 24999 [master] egg started on http://127.0.0.1:7001 (1369ms)
如上結果所示,咱們服務端的API就準備就緒了。
這裏爲了簡潔,咱們把界面給省略了,咱們新開一個終端來模擬前端訪問API,也能夠下載一個chrome插件postman來訪問。
一、建立帳戶API
臨時新建一個KEY:
cleos create key Private key:5KbRAog4DxwAMthSrb44ZNGtGD828mzCfEvXkvVDSakxQtFBr15 Public key:EOS6y7ok9AwmToGmgsFWCQU7iGJMsStTQf6g4F6aoHTH56zEos5Sk
好比建立新帳戶 ouyangxinmin :
curl -i -X POSThttp://localhost:7001/account/create -d username=ouyangxinmin -dactive=EOS6y7ok9AwmToGmgsFWCQU7iGJMsStTQf6g4F6aoHTH56zEos5Sk -downer=EOS6y7ok9AwmToGmgsFWCQU7iGJMsStTQf6g4F6aoHTH56zEos5Sk
二、轉帳API
blockrent111給帳戶 ouyangxinmin 轉帳:
curl -i -X POSThttp://localhost:7001/transfer -d contract=blockrent111 -d from=blockrent111 -dto=ouyangxinmin -d pk=5JhDyR6zNDifzoJPE5MnfxvLvbHdXTSBuKzaXEr82rL6ChoRyvL -dquantity="1000.0000 BLR" -d mome="token reward"
ouyangxinmin 給帳戶blockrent222轉帳:
curl -i -X POSThttp://localhost:7001/transfer -d contract=blockrent111 -d from=ouyangxinmin -dto=blockrent222 -d pk=5KbRAog4DxwAMthSrb44ZNGtGD828mzCfEvXkvVDSakxQtFBr15 -dquantity="10.0000 BLR" -d mome="token reward"
三、獲取代幣餘額
curl -i -X POSThttp://localhost:7001/currency/balance -d contract=blockrent111 -daccount=ouyangxinmin
在上文中第一節第九、10步,咱們已經經過命令終端部署了合約、建立了代幣合約,也能夠把這個功能集成到後臺操做,若是已經操做過了第一節第九、10步,如下第一、2步可跳過。
一、調用部署合約API
curl -i -X POSThttp://localhost:7001/deployContract -d contract=blockrent111
二、調用建立代幣合約接口
代幣名稱BLR已經寫在home.js代碼中,可參考第二節第1點作修改,也能夠改進一下作爲參數傳入。
curl -i -X POSThttp://localhost:7001/createCurrency -d contract=blockrent111
**三、批量建立測試帳戶 **
curl -i -X POSThttp://localhost:7001/createCurrency -d contract=blockrent111 # 返回5個帳戶,能夠配置建立個數 "4ksalziynrzc","jsa4pocy3rzi","l5eauvfqmu2h","ihl1wsbau1yr","zaxwz2lkhkkn","glkecjmtfnwk"
爲了提升用戶體驗,讓用戶無感知地建立帳戶,能夠提早在後臺批量建立一些測試帳戶,當用戶註冊時,自動綁定到註冊帳號,實現無縫對接區塊鏈,但這樣有點過於中心化了,相似交易所的作法。
【崗位名稱】PHP開發工程師
【薪資範圍】10k-20k/上海徐匯
【職位描述】
1, 負責後端的架構設計和代碼編寫,實現業務流程;
2,負責WEB APP等手機側系統的後臺開發對接;
【崗位要求】
一、精通PHP開發,,熟悉PHP開發框架Thinkphp5,有Laravel開發經驗的加分;
二、紮實的SQL知識,能熟練運用MySQL數據庫,具有Nosql開發經驗者優先錄用;
三、有必定的前端編程能力,如具備Jquery、Bootstrap、Vue、React等任意一到兩種開發經驗
四、有2年以上互聯網企業相關開發經驗優先
【崗位名稱】前端開發工程師
【薪資範圍】15k-20k/上海徐匯
【職位描述】
1. 負責(PC+移動)端界面的前端構建,各種交互設計與實現;
2. Web前端表現層及與後端交互的架構設計和開發;
三、持續的優化前端體驗和頁面響應速度,並保證兼容性和執行效率。
【崗位要求】
1. 3年以上WEB前端(html5)開發經驗,前端重構與腳本開發經驗;
2. 精通HTML五、CSS/CSS三、JavaScript等前端相關技術,熟悉W3C標準;
3,熟悉VUE,React,Jquery、JqueryMobile等框架,響應式頁面開發經驗,能開發兼容移動版瀏覽器的應用,而且能實現各類交互效果;
4,有Html5 WEB App打包技術基礎者優先;
5,對區塊鏈項目有興趣,瞭解智能合約,WEB3.JS等基本功能。
內容來源:海陽之新(簡書)專欄
做者:HiBlock&創業股 上海技術工坊 分享嘉賓歐陽新民
Blockathon|48小時極客競賽,區塊鏈馬拉松等你挑戰(成都)
時間:2018年9月14-16日
地點:成都高新區天府五街200號菁蓉國際廣場2號樓A座12樓中韓互聯網+新技術孵化器
招募50名開發者(識別下圖二維碼或點擊「閱讀原文」便可報名)
報名費100元爲參賽押金,參賽者我的緣由不能到場參加活動概不退款;參賽者全程參與活動,待活動結束後現場退還。9月14日18:00開始第一次簽到,9月15日和16日天天早上都要記得簽到哦。
主辦方免費提供2天的食物、飲料,併爲每一位參會者準備一件文化衫
如下是咱們的社區介紹,歡迎各類合做、交流、學習:)