去中介化的租房EOS DAPP,实现租客与房东互赢

Posted by

去中介化的租房EOS DAPP,实现租客与房东互赢

内容来源:海阳之新(简书)专栏

作者:HiBlock&创业股 上海技术工坊分享嘉宾欧阳新民

去中介化的租房EOS DAPP,实现租客与房东互赢

1

前言

【项目目标】

开发一个去中介化的租房EOS DAPP,实现租客与房东互赢。

【项目需求】

1、建立本地节点,创建钱包、加载biod合约、创建代币分配账户。

2、部署eosjs项目,提供创建代币合约、创建账户(可批量)、转账、查询代币余额等API。

3、WEB前端为一个简易租房界面,可以浏览租房信息,会员注册(赠送代币)后,可以预约看房,看房后可以对房源打分(赠送代币),租房后可以对房源打分(赠送代币),后台房东可以发布出租房源(赠送代币),翻转房源状态(赠送代币),代币在平台增值后,可以做为房租支付或抵押。

4、本项目代币名称为:BLR(BlockRent的简写)

【测试环境】

在Win7下安装的VMWare10,在VMWare10中安装Ubuntu18.04、Docker18.03.1-ce、EOS DAWN v1.0.8,环境看起来有点兜转,就暂且用做测试吧。

2

部署本地节点

1、启动节点

$ 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

2、查找eosio公私钥

在当前路径下,我们可以打开config.ini文件,查找signature-provider,即可找到eosio公私钥:

EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

笔者注:在DAWNv1.0.2时,公私钥是可以独立于钱包创建账户操作的,但v1.0.5后就必须先将私钥导入到钱包里才能操作,所以我们早早地就把公私钥复制下来,准备好接下来的操作。

3、创建钱包

cleos wallet create -nblockrent_wallet

PW5KPFSWL3YfgRPVaER9EjoScBk1Afdcx6T3RVWHCqpjfuuySmC7G

4、将eosio账户密钥导入钱包

cleos wallet import -nblockrent_wallet 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

5、创建bios合约

cleos set contract eosiocontracts/eosio.bios -p eosio

#返回的交易地址

cd15f3ee17c043f202f801444e73b69165d0becd6d153ad8e41c870e88421a87

6、创建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

7、导入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

8、创建账户

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格式。

9、创建代币合约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、发行代币

在产品设计阶段,我们约定的激励分配是这样的:

·总发行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

1、克隆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…,可修改代币名称和总发行量。

保存并上传。

2、运行项目,开启服务

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来访问。

1、创建账户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

2、转账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”

3、获取代币余额

curl -i -X POSThttp://localhost:7001/currency/balance -d contract=blockrent111 -daccount=ouyangxinmin

5

后端对接

在上文中第一节第9、10步,我们已经通过命令终端部署了合约、创建了代币合约,也可以把这个功能集成到后台操作,如果已经操作过了第一节第9、10步,以下第1、2步可跳过。

1、调用部署合约API

curl -i -X POSThttp://localhost:7001/deployContract -d contract=blockrent111

2、调用创建代币合约接口

代币名称BLR已经写在home.js代码中,可参考第二节第1点做修改,也可以改进一下做为参数传入。

curl -i -X POSThttp://localhost:7001/createCurrency -d contract=blockrent111

3、批量创建测试账户

curl -i -X POSThttp://localhost:7001/createCurrency -d contract=blockrent111

# 返回5个账户,可以配置创建个数

“4ksalziynrzc”,”jsa4pocy3rzi”,”l5eauvfqmu2h”,”ihl1wsbau1yr”,”zaxwz2lkhkkn”,”glkecjmtfnwk”

为了提高用户体验,让用户无感知地创建账户,可以提前在后台批量创建一些测试账户,当用户注册时,自动绑定到注册账号,实现无缝对接区块链,但这样有点过于中心化了,类似交易所的做法。

—— 【创业股】诚聘开发工程师——

【岗位名称】PHP开发工程师

【薪资范围】10k-20k/上海徐汇

【职位描述】

1,负责后端的架构设计和代码编写,实现业务流程;

2,负责WEB APP等手机侧系统的后台开发对接;

【岗位要求】

1、精通PHP开发,,熟悉PHP开发框架Thinkphp5,有Laravel开发经验的加分;

2、扎实的SQL知识,能熟练运用MySQL数据库,具备Nosql开发经验者优先录用;

3、有一定的前端编程能力,如具有Jquery、Bootstrap、Vue、React等任意一到两种开发经验

4、有2年以上互联网企业相关开发经验优先

【岗位名称】前端开发工程师

【薪资范围】15k-20k/上海徐汇

【职位描述】

1.负责(PC+移动)端界面的前端构建,各类交互设计与实现;

2. Web前端表现层及与后端交互的架构设计和开发;

3、持续的优化前端体验和页面响应速度,并保证兼容性和执行效率。

【岗位要求】

1. 3年以上WEB前端(html5)开发经验,前端重构与脚本开发经验;

2.精通HTML5、CSS/CSS3、JavaScript等前端相关技术,熟悉W3C标准;

3,熟悉VUE,React,Jquery、JqueryMobile等框架,响应式页面开发经验,能开发兼容移动版浏览器的应用,并且能实现各种交互效果;

4,有Html5 WEB App打包技术基础者优先;

5,对区块链项目有兴趣,了解智能合约,WEB3.JS等基本功能。

简历投放地址:yangnx@vcstock.cn

去中介化的租房EOS DAPP,实现租客与房东互赢

Blockathon|48小时极客竞赛,区块链马拉松等你挑战(成都)

时间:2018年9月14-16日

地点:成都高新区天府五街200号菁蓉国际广场2号楼A座12楼中韩互联网+新技术孵化器

  • 招募50名开发者(识别下图二维码或点击“阅读原文”即可报名)

  • 报名费100元为参赛押金,参赛者个人原因不能到场参加活动概不退款;参赛者全程参与活动,待活动结束后现场退还。9月14日18:00开始第一次签到,9月15日和16日每天早上都要记得签到哦。

  • 主办方免费提供2天的食物、饮料,并为每一位参会者准备一件文化衫

去中介化的租房EOS DAPP,实现租客与房东互赢

始发于微信公众号: 区块链社区HiBlock