【项目目标】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天的食物、饮料,并为每一位参会者准备一件文化衫
如下是咱们的社区介绍,欢迎各类合做、交流、学习:)