網絡為師,文章作伴。
在學習區塊鏈的過程中遇到了不少問題,一一記錄下來,方便日后總結回顧。
入門的文章
完全是看的這篇的(十分感謝博主),其中踩了個大坑就是 ABI的導入出了點問題
https://blog.csdn.net/jevior/article/details/81229860?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4.no_search_link
這里把這篇文章的重要代碼摘要出來方便閱讀,直接復制粘貼到運行的時候可能會出一些問題,因為web3一直再更新,編譯器的版本也不同
Solidity部分
pragma solidity ^0.4.17;
contract Data{
string public data;
function Data()public{
data = "init data";
}
function setData(string str) public payable{
data = str;
}
function getData() public view returns (string) {
return data;
}
}
WEB部分
var Web3 = require("web3");
var web3 = new Web3();
web3.setProvider(new Web3.providers.HttpProvider("http://localhost:7545"));
var abi = [{"constant":true,"inputs":[],"name":"getData","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"str","type":"string"}],"name":"setData","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"data","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}];
var address = '0x345ca3e014aaf5dca488057592ee47305d9b3e10';
var data = new web3.eth.Contract(abi,address);
data.methods.getData().call(null,function(error, result){
console.log("the data:"+result);
});
data.methods.setData("hello blockchain").send({from: '0x627306090abaB3A6e1400e9345bC60c78a8BEf57'}).on('transactionHash', function(hash){
console.log("hash:", hash);
data.methods.getData().call(null,function(error, result){
console.log("the data:"+result);
});
});
發幣文章
發幣我看的是這篇文章,比較詳細,說是發幣,其實是賦予(強加)代碼一個屬性
文章的鏈接:https://blog.csdn.net/a6taotao/article/details/112602580 (十分感謝博主的分享)
這里面的文章寫的是非常非常的不錯,很詳細,比外面買的很多書好多了。
發幣過程可以配合這個視頻一起看
https://www.bilibili.com/video/BV1TK4y1E7gW
發幣入門
如果你進過土狗項目群,估計你應該聽過這樣的對幣的介紹【燃燒,分紅,XXX打入黑洞】
對於進階發幣,其實也就是多了幾個函數,這篇文章講的非常不錯,這里把重點知識摘抄出來
文章鏈接:https://blog.csdn.net/su_bo_2010/article/details/80095229
如果對approve授權函數弄不清楚,可以看看這篇詳細介紹的文章
https://www.jianshu.com/p/79939b782e02
這是一個ERC20代幣的標准代幣接口
contract ERC20 { function totalSupply() constant returns (uint totalSupply); function balanceOf(address _owner) constant returns (uint balance); function transfer(address _to, uint _value) returns (bool success); function transferFrom(address _from, address _to, uint _value) returns (bool success); function approve(address _spender, uint _value) returns (bool success); function allowance(address _owner, address _spender) constant returns (uint remaining); event Transfer(address indexed _from, address indexed _to, uint _value); event Approval(address indexed _owner, address indexed _spender, uint _value); }
下面就是一些代幣的擴展
/* This notifies clients about the amount burnt */
event Burn(address indexed from, uint256 value);
/* This notifies clients about the amount frozen */
event Freeze(address indexed from, uint256 value);
/* This notifies clients about the amount unfrozen */
event Unfreeze(address indexed from, uint256 value);
顧名思義,這三個事件分別對應(具體看實現代碼):
- 燃燒操作者賬戶中指定金額的代幣,當燃燒時代幣總額也會對應減少;
- 凍結指定賬戶指定金額;
- 解凍指定賬戶指定金額。
進階學習✌
如何計算質押獎勵?
https://learnblockchain.cn/question/2732
想要一份單幣質押和lp質押的demo學習一下?
Sushi 是一個很好的參考實現:
LP 質押(MasterChef.sol):
https://github.com/sushiswap/sushiswap/blob/canary/contracts/MasterChef.sol
單幣質押:(SushiBar.sol):
https://github.com/sushiswap/sushiswap/blob/canary/contracts/SushiBar.sol
區塊鏈游戲
一個非常經典的游戲代碼
https://lisongbai.top/2020/06/27/%E5%83%B5%E5%B0%B8%E6%94%BB%E5%87%BB%E4%BA%BA%E7%B1%BB/