去中介化的租房EOS DAPP,實現租客與房東互贏

image

1

前言

【項目目標】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

2

部署本地節點

一、啓動節點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中的餘額來進行交易。

3

部署EOSJS API

一、克隆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就準備就緒了。

4

前端對接

這裏爲了簡潔,咱們把界面給省略了,咱們新開一個終端來模擬前端訪問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

5

後端對接

在上文中第一節第九、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等基本功能。

簡歷投放地址:yangnx@vcstock.cn 

內容來源:海陽之新(簡書)專欄

做者:HiBlock&創業股 上海技術工坊 分享嘉賓歐陽新民

Blockathon|48小時極客競賽,區塊鏈馬拉松等你挑戰(成都)

時間:2018年9月14-16日

地點:成都高新區天府五街200號菁蓉國際廣場2號樓A座12樓中韓互聯網+新技術孵化器

  • 招募50名開發者(識別下圖二維碼或點擊「閱讀原文」便可報名)

  • 報名費100元爲參賽押金,參賽者我的緣由不能到場參加活動概不退款;參賽者全程參與活動,待活動結束後現場退還。9月14日18:00開始第一次簽到,9月15日和16日天天早上都要記得簽到哦。

  • 主辦方免費提供2天的食物、飲料,併爲每一位參會者準備一件文化衫

image

如下是咱們的社區介紹,歡迎各類合做、交流、學習:)

image

相關文章
相關標籤/搜索