区块链学习入门


网络为师,文章作伴。

在学习区块链的过程中遇到了不少问题,一一记录下来,方便日后总结回顾。

 

入门的文章

完全是看的这篇的(十分感谢博主),其中踩了个大坑就是 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/


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM