区块链给我的感觉就是记账簿。在区块链系统中,每个人都可以来进行记账,系统会选择记账最快最好的人,把这个人所记录的内容写到账本,并将这账本内容发给系统内所有人备份。
区块链领域的高技术性含量和极度稀缺性在从业者薪资上得到反映,区块链从业者平均年薪达34.09万元,超过AI人工智能领域平均年薪,居薪酬排行榜首位。在2018年区块链大爆发但专业人才少,所以很感兴趣的从渐进式构建从原理到实战。
一、 geth客户端
1.geth私有链搭建
1.1geth的安装
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa: ethe reum/ethereum
sudo apt-get update
sudo apt-get install ethe reum
1.2配置创世块文件
①创建一个名为genesis.json的文件,写入图片中的代码
{
"config": {
"chainId": 18,//参数配置相同
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x2",//挖矿难度
"extraData" : "",
"gasLimit" : "0x2fefd8",// gasLimit上限
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
②初始化创世节点并设置data目录启动节点
geth –datadir ./data init gensis.json
geth – datadir ./data –network 15 – port 30303 –rpc – rpcaddr 0.0.0 – rpcport 8545 – rpcapi ‘db,net,eth,web3,personal’
--rpccorsdomain ‘*’ –nat “any” –nodiscover console
1.3账户管理
①创建账号
Personal.newAccount(“123”)
②查看账号
Eth.accounts
③查看余额
Eth.getBalance(eth.accounts[0])
1.4启动挖矿
①启动挖矿miner.start()
②停止挖矿miner.stop()
2.geth的操作命令
二、 智能合约的编写及调试技巧
2.1 博彩行业的痛点分析
- 赖账
- 假球
- 舞弊、欺诈
比特币是数字货币;数字资产。博彩行业是数字资产中的一种,区块链解决数字资产的问题非常合适
2.1.1 区块链解决痛点
- 公开透明
- 不可篡改
- 智能合约交割
- 加密保护
2.2 足彩合约的开发
2.2.1常见以太坊应用架构
2.2.2核心功能与角色
①CTO:创建游戏
②玩家:下注
③CTO:游戏开奖
2.3合约开发
soccer.sol
pragma solidity^0.4.20;
contract betsoccer {
address cto;
struct Game {
string hostTeam;
string guestTeam;
uint16 point;
}
Game public game;
struct Player {
address addr;
uint amout;
}
Player[] public teamsA;
Player[] public teamsB;
uint totalTeamA;
uint totalTeamB;
bool canReset;
//构造函数和设置
function soccergame(address _cto)payable public {
cto = _cto;
canReset = true;
}
function setGame(string A,string B,uint16 pk)public {
assert(canReset);
assert( msg.sender == cto);//must cto
game.hosetTeam = A;
game.guestTeam = B;
game.point = pk;
canReset = false;
totalTeamB = 0;
totalTeamA = 0;
}
//下注函数
function bet(bool aORb)public payable{
assert( msg.value > 0);
Player memory player = Player(msg.sender,msg.value);
if( aORb ){
//host
teamsA.push(player);
totalTeamA += msg.value;
}
else{
teamsB.push(player);
totalTeamB += msg.value;
}
}
//开奖函数,只有CTO可以开奖
function openGame( uint8 scoreA, uint8 scoreB)public payable{
assert( msg.sender == cto);
//who win? A=1B=0,50
if( scoreA *100 > scoreA *100 + game.point){
//host win
for(i=0;i< teamsA.length;i++){
player = teamsA[i];
player.addr.transfer(90*totalTeamB * player.amount/totalTeamA/100 + player.amount);
}
cto.transfer(totalTeamB * 10 /100);
}
else{
for(i=0;i< teamsA.length;i++){
player = teamsB[i];
player.addr.transfer(90*totalTeamA * player.amount/totalTeamB/100 + player.amount);
}
cto.transfer(totalTeamA * 10 /100);
}
}
}
DApp一定要做角色分析
Solidity语法相对简单,但是要多考虑安全
三、版权交易系统设计
3.1版权加以系统的痛点
背景:一个摄影师社交网络,摄影师在其中分享照片,摄影师对照片进行评价,挑选出最优秀的作品,媒体和企业在其中发下你有价值的照片并且购买版权
痛点:
- 收入模式不明确,长期处于亏损状态
- 盗版发现和认定困难,赔偿金追索成本高昂
- 社交平台属性对优质照片的挑选和确认构成限制
- 社区发展进入瓶颈期,需要新的模式
3.2版权交易系统的设计
3.2.1 区块链系统的解决思路
- 金融圈里平民化
- 消除信息不对称
- 提升流动性
- 跨边界强协作
3.2.2 角色分析
- Photographer
- Curator
- Buyer
- Governor
- Investor
3.2.3 角色激励设计
角色 | 激励行为 | 惩罚行为 |
---|---|---|
Photographer | 拍摄优秀图片 | 盗用、刷单 |
Curator | 点赞、评论 | 点赞、评论 |
Buyer | 投资眼光精准 | 恶意炒作 |
Governor | 公正公平 | 暗箱操作、腐败 |
Investor | 投资眼光精准 | 恶意炒作 |
3.2.4 双层token设计
总结:
1.痛点分析是区块链系统设计的必要步骤
2.好的经济系统有助于系统未来的良性发展