solidity
Lich Howger
这个作者很懒,什么都没留下…
展开
-
080-Solidity基础入门 (一)
今天,自己又要重新复习一次Solidity计算机这个行业,学了忘,忘了学,学了还得忘感觉自己一直很努力的在学习但是却没有一种付出得到回报的感觉哎Solidity先写一个最简单的Hello World吧pragma solidity >=0.4.22 <0.7.0;contract Hello{ ...原创 2020-03-27 10:28:16 · 364 阅读 · 0 评论 -
247-cryptozombies全攻略二
cryptozombies全攻略二第二章.映射mapping和地址address我们现在要存储僵尸的所有权就是说每个僵尸都属于一个用户一个用户有多个僵尸所以我们要用映射来反应这个关系 mapping (uint => address) public zombieToOwner; mapping (address => uint) ...原创 2019-02-14 15:32:54 · 309 阅读 · 2 评论 -
263-ethereum正式部署合约
ethereum正式部署合约如果我们要在正式网络部署合约只需要remix和MetaMask就可以了首先我们登录MetaMask里面需要以太币如果我们要部署的合约比较小那么只需要一点点以太币然后我们打开remix新版:http://remix.ethereum.org旧版https://ethereum.github.io/bro...原创 2019-02-20 11:09:21 · 158 阅读 · 0 评论 -
264-ethereum测试部署合约
ethereum测试部署合约我们尝试在ganache-cli环境来部署合约先来写一个简单的合约pragma solidity ^0.4.24;contract SimpleStorage { string str; constructor(string _str) public{ str=_str; } ...原创 2019-02-20 11:48:55 · 238 阅读 · 0 评论 -
265-ethereum合约交互
ethereum合约交互从以太坊上获取已经部署好的合约实例需要的数据1.ABI2.合约地址const ABI = [{...}]const address = 0xabcd....然后我们还是需要web3来设置网络let Web3 = require('web3')let web3 = new Web3('http://127.0.0.1:75...原创 2019-02-20 13:33:04 · 336 阅读 · 0 评论 -
266-ethereum抽奖小游戏
ethereum抽奖小游戏我们先来写合约pragma solidity ^0.4.24;contract Lottery{}我们分析一下需要哪些状态变量1.管理员, 地址2.彩民池, 地址数组3.期数, uint4.赢家, 地址contract Lottery{address public manager;address[] p...原创 2019-02-20 16:03:06 · 388 阅读 · 0 评论 -
268-ethereum抽奖小游戏二
ethereum抽奖小游戏二我们来写一个把奖金池的奖金全都退回去的功能1.只有管理员可以操作2.彩民人数大于0时才执行3.遍历彩民池,对每一个彩民进行转账,每个地址1ether4.彩民池清零5.期数加一function giveback() public onlyManager{ require(players.length !=0) //遍...原创 2019-02-20 17:42:41 · 164 阅读 · 0 评论 -
269-ethereum抽奖小游戏三
ethereum抽奖小游戏三然后在App.js导入一下let lotteryInstance = require(../loadInstance)然后在class App里面//生命周期函数componentWillMount(){ let manager = await lotteryInstance.methods.manager().cal...原创 2019-02-21 11:33:11 · 172 阅读 · 0 评论 -
318-oraclize入门
oraclize入门我们可以通过oraclize在ethereum与外界通信看下文档https://docs.oraclize.it/#ethereum看下示例代码pragma solidity ^0.4.11;import "github.com/oraclize/ethereum-api/oraclizeAPI.sol";contract ...原创 2019-03-20 10:29:33 · 382 阅读 · 0 评论 -
339-ethereum_solidity入门
solidity入门数据类型分类1.值类型(值传递)2.引用类型(指针传递) 1.memory(值类型) 2.storage(引用类型)先来说一下 值类型1.boolean2.integer3.address4.fixed byte array5.rational and integer literals6.enums7.function t...原创 2019-04-12 13:01:33 · 381 阅读 · 0 评论 -
341-solidity_SafeMath
contract SafeMath { function safeMul(uint256 a, uint256 b) internal returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function safeDiv(uint256 a, uin...原创 2019-04-12 13:32:15 · 659 阅读 · 0 评论 -
343-eth合约编译部署
我们先create-react-app创建一个项目然后写一个合约lottery.sol我们来安装一下合约的编译器npm install solc@0.4.25 --save然后来编译合约compile.jslet fs = require('fs')let solc = require('solc')//1.读取合约let ...原创 2019-04-13 10:02:40 · 346 阅读 · 0 评论 -
344-浅析CryptoKitties(CK)
pragma solidity ^0.4.11;/** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user ...原创 2019-04-13 10:03:11 · 806 阅读 · 0 评论 -
345-以太坊部署合约验证合约
先来写一个合约pragma solidity >=0.4.22 <0.6.0;contract SimpleWithDefault{ string public name; constructor(string memory _name) public{ name=_name; } f...原创 2019-04-13 10:06:31 · 516 阅读 · 0 评论 -
346-浅析TestCoin和LichCoin
pragma solidity >=0.4.22 <0.6.0;/** * Math operations with safety checks */contract SafeMath { function safeMul(uint256 a, uint256 b) pure internal returns (uint256) { uint256 c = a ...原创 2019-04-13 10:08:01 · 704 阅读 · 0 评论 -
246-cryptozombies全攻略一
cryptozombies全攻略一第二章.合约我们要建立最基本的合约首先要写版本指令然后写合约pragma solidity ^0.4.19contract ZombieFactory{}第三章.状态变量和整数状态变量会被永久保存在合约中也就是说他们会被写入到以太坊区块链中我们的僵尸DNA将由一个十六位数字组成所以我们来一个状态变量contra...原创 2019-02-14 12:56:01 · 694 阅读 · 0 评论 -
262-ethereum部署合约
ethereum部署合约我们先来看下文档找到 new contract然后我们看看new web3.eth.Contract(jsonInterface[,address][,options])Creates a new contract instance with all its methods and events defined in its json...原创 2019-02-19 17:02:11 · 295 阅读 · 0 评论 -
261-ethereum合约应用模块
ethereum合约应用模块现在跟合约进行交互我们创建三个文件1.display.js 负责展示2.interaction.js 负责交互3.utils.js 工具然后我们创建3个文件夹1.eth2.utils3.display分别放不同的东西我们来看下结构用户与App进行交互App控制一个控制模块Controlle...原创 2019-02-19 17:01:08 · 233 阅读 · 0 评论 -
249-cryptozombies全攻略四
cryptozombies全攻略四第一章.可支付先总结一下之前的函数修饰符1.private 合约内部调用2.public 任何地方调用3.internal 能被继承的合约调用4.external 只能从合约外部调用5.view 不会更改和保存任何数据6.pure 不写数据,也不读数据7.自定义modifier然后我们...原创 2019-02-15 15:14:42 · 322 阅读 · 0 评论 -
271-react合约交互
react合约交互我们创建三个文件夹,对js文件进行一个管理1.display display.js2.eth interaction.js loadInstance.js3.utils getWeb3.js首先,我们把web3分离到getWeb3.js里面getWeb3.js文件//web3let Web3 = require...原创 2019-02-21 17:03:30 · 420 阅读 · 0 评论 -
272-ethereum抽奖小游戏四
ethereum抽奖小游戏四把所有逻辑理一遍看看完整代码第一步.先编写solidity合约代码pragma solidity ^0.4.24;contract Lottery{ address public manager; address [] public players; address public winner;...原创 2019-02-21 18:31:12 · 260 阅读 · 0 评论 -
252-cryptozombies全攻略五
cryptozombies全攻略五第一章.以太坊代币一个代币,在以太坊基本上就是遵循一些共同规则的智能合约也就是它实现了所有其他代币共享的一组标准函数例如transfer(address _to, uint256 _value)balanceOf(address _owner)在智能合约内部,通常有一个映射mapping(address =&g...原创 2019-02-16 17:27:30 · 235 阅读 · 0 评论 -
253-node.js调用web3
node.js调用web3let readFileInfo = async() => { try{ let data = await readFilePromise() console.log('data: ', data.toString()) }catch(e){ console.log(e) }}readFileInf...原创 2019-02-16 20:17:24 · 452 阅读 · 0 评论 -
254-cryptozombies全攻略六
cryptozombies全攻略六回顾一下之前的所有代码1.ZombieFactorypragma solidity ^0.4.19;import "./ownable.sol";import "./safemath.sol";contract ZombieFactory is Ownable { using SafeMath for u...原创 2019-02-16 20:19:56 · 190 阅读 · 0 评论 -
255-cryptozombies全攻略七
cryptozombies全攻略七第一章.Web3.js什么是Web3.js以太坊网络是由节点组成的每个节点都包含了区块链的一份拷贝当我们想要调用一份智能合约的一个方法需要从其中一个节点中查找并告诉它1.智能合约的地址2.想调用的方法3.想传入的参数以太坊只能识别一种叫做JSON-RPC的语言这种语言不好懂Web3.js把查询语句都隐藏起来...原创 2019-02-16 21:40:58 · 210 阅读 · 0 评论 -
257-solidity合约逻辑
solidity合约逻辑我们来理一下逻辑第一步.编写合约--solidity第二步.编译合约用编译器将solidity代码编译出bytecode和ABIABI是不上链的只有bytecode上链第三步.部署合约然后将bytecode部署到区块链上部署后,会返回合约的地址然后想要和合约交互那么要知道1.地址2.ABI通过这两个东西,构造一个...原创 2019-02-18 15:54:44 · 282 阅读 · 0 评论 -
258-promise异步读写
promise异步读写我们用promise配合async,await来写文件异步读写本来我们的代码是这样的let fs = require('fs');fs.readFile('./data.txt','utf-8',(err, data) => { if (err) { console.log('readFile fa...原创 2019-02-18 16:41:55 · 116 阅读 · 0 评论 -
241-solidity之bytes
solidity之bytescontract Test{//hello world的16进制bytes10 public b10 = 0x68656c6c6f20776f726c64; bytes public bytesInfo = new bytes(b10.length);function fixedByte2Bytes() public{ for...原创 2019-02-13 18:51:43 · 1663 阅读 · 0 评论 -
242-solidity之伪随机数
solidity之伪随机数我们怎么获取一个随机的uint?Ethereum内部有一个散列函数keccak256它用了SHA3版本一个散列函数基本上就是把一个字符串转换为一个256位的16进制数字字符串的微小变化也会引起散列数据极大的变化这个在Ethereum中有很多的应用我们现在用它来创造一个伪随机数其实在区块链中产生一个随机数一个很难的问题...原创 2019-02-13 19:02:57 · 440 阅读 · 0 评论 -
243-solidity之事件
solidity之事件事件是合约和区块链通讯的一种机制我们的前端应用监听某些事件然后做出反应例子event IntegersAdded(uint x, uint y, uint result);function add(uint _x, uint _y) public{uint result= _x + _y;//触发事件,通知AppIntege...原创 2019-02-13 19:18:33 · 479 阅读 · 1 评论 -
244-solidity之address和mapping
solidity之address和mappingaddress地址以太坊区块链由 _account 账户生成一个账户的余额是 以太,(这是以太坊区块链上使用的币种)我们可以和其他账户之间进行支付或者接受以太币每个账户都有一个地址我们可以把这个地址看做用户的idmapping映射映射本质上就是键值对假设现在一个用户有好几个苹果一个苹果有一个idstr...原创 2019-02-13 19:40:01 · 718 阅读 · 0 评论 -
245-solidity之storage和memory
solidity之storage和memory在solidity中,有两个地方可以存储变量storagehe 或者 memorystoragestorage变量是指永久存储在区块链中的变量memorymemory变量是临时的外部函数对某合约调用完成的时候内存型的变量就会被移除大多数的时候我们用不到这些关键字因为默认情况下solidity会自动...原创 2019-02-14 10:27:45 · 314 阅读 · 0 评论 -
260-cryptozombies全攻略八
cryptozombies全攻略八第四章.调用和合约函数web3.js有2个方法来调用合约的函数1.call2.sendcallcall用来调用view函数和pure函数值运行在本地节点不会在区块链上创建事务sendsend将创建一个事务并改变区块链上的数据用send来调用非view或pure的函数myContract.metho...原创 2019-02-19 16:58:51 · 354 阅读 · 0 评论 -
248-cryptozombies全攻略三
cryptozombies全攻略三第一章.智能协议的永固性我们看下这段代码contract ZombieFeeding is ZombieFactory { address ckAddress = 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d; KittyInterface kittyContract = ...原创 2019-02-15 11:32:56 · 281 阅读 · 2 评论