区块链
文章平均质量分 83
biakia0610
这个作者很懒,什么都没留下…
展开
-
基于虚拟机源码分析move合约(六):整数、布尔值的引用
move合约中针对整数和布尔值的引用和解引用原创 2022-10-20 14:45:42 · 477 阅读 · 1 评论 -
基于虚拟机源码分析move合约(五):vector的基本操作
move合约中对vector的基本操作的原理原创 2022-10-18 15:48:43 · 620 阅读 · 0 评论 -
基于虚拟机源码分析move合约(四):布尔值和比较大小
move合约布尔变量的运算以及整数比较大小的原理原创 2022-10-18 14:41:25 · 477 阅读 · 0 评论 -
基于虚拟机源码分析move合约(三):整数的位运算和强制转换
move合约整数的位操作和强制转换原理原创 2022-10-17 14:23:33 · 494 阅读 · 0 评论 -
基于虚拟机源码分析move合约(二):整数基本运算
move合约加减乘除取模运算的原理原创 2022-10-17 13:33:24 · 341 阅读 · 0 评论 -
基于虚拟机源码分析move合约(一):本地变量
对照Move虚拟机源码解读本地变量的分配和使用原创 2022-09-29 14:59:40 · 601 阅读 · 0 评论 -
基于虚拟机源码分析move合约(零):Move虚拟机执行原理
本系列文章尝试通过解读move虚拟机执行阶段的源码,来分析move合约实际的工作原理原创 2022-09-28 17:11:03 · 683 阅读 · 0 评论 -
Solana Account 详解
在Solana的世界里,一切都是Account,每个Account都有一个独一无二的地址,除了地址外,每个Account都有以下属性原创 2022-07-13 15:00:15 · 1558 阅读 · 1 评论 -
Solana SPL Token 的一些最佳实践
SPL Token是Solana针对ERC20的一种实现,在Solana编程中常常会对SPL Token进行操作,今天介绍一些关于SPL Token的最佳实践,代码出自Solana官方之手:spl_tokes.rsToken Account是SPL Token里特有的Account类型,它的作用是用来持有某种类型的代币,每个用户想要持有代币,就必须创建一个Token Account。在转移代币的时候,我们往往需要校验一个Token Account是合法的,上述代码包含了所有需要校验的点:1. 校验da原创 2022-07-13 13:58:29 · 2783 阅读 · 0 评论 -
基于Merkle Tree为NFT添加白名单功能(翻译)
1、介绍在我们今天所知道和喜爱的区块链出现之前,Merkle Trees一直存在于密码学和计算机科学领域。如今,我们开始慢慢看到它们在链上更频繁地用于数据验证。在这篇文章中,我将解释Merkle Trees如何在NFT(ERC-721)背景下实现NFT的白名单的功能,以及它们如何提供保证NFT只能由特定的用户认领。2、什么是Merkle Trees?Merkle Trees是一种树状结构,树上的每个节点都由一个值表示,这个值是一些哈希函数的结果。哈希函数是单向的,这意味着从一个输入产生一个输出很翻译 2022-04-08 15:13:31 · 1436 阅读 · 0 评论 -
写一个Solana版的Sushi Masterchef
写一个Solana版的Sushi Masterchef原创 2022-03-29 15:33:41 · 930 阅读 · 0 评论 -
Solana项目学习(一):Hello World
项目地址:example-helloworld1、整体代码use borsh::{BorshDeserialize, BorshSerialize};use solana_program::{ account_info::{next_account_info, AccountInfo}, entrypoint, entrypoint::ProgramResult, msg, program_error::ProgramError, pubkey::原创 2022-02-21 15:17:57 · 861 阅读 · 0 评论 -
PawningShop:一种NFT抵押借贷的实现
PawningShop是一种基于NFT的抵押借贷的实现。PawningShop中有两种角色:一种是抵押NFT的人,他需要通过抵押NFT借入一笔钱,我们叫他borrower,另一种是借出钱的人,我们叫他lender....原创 2021-11-14 15:05:30 · 13031 阅读 · 0 评论 -
Pancake的IFO解读
IFO英文全称是Initial Farm Offering,用户在pancake进行CAKE-BNB挖矿获得的LP Token,用户使用LP Token可以在IFO合约中进行新发布币种的认购。代码在:initial-farm-offering/IFO.sol at 1d452d71d5956693467605e76b04a1f6c06c8344 · pancakeswap/initial-farm-offering · GitHubpragma solidity 0.6.12;import原创 2021-09-10 13:20:38 · 8540 阅读 · 0 评论 -
NFT Market的一种实现
代码来源:https://github.com/blocklords/seascape-smartcontracts/blob/main/contracts/nft_marketplace/NftMarket.solpragma solidity ^0.6.7;pragma experimental ABIEncoderV2;import "./../openzeppelin/contracts/token/ERC20/IERC20.sol";import "./../openzeppel原创 2021-09-08 14:11:44 · 11052 阅读 · 0 评论 -
SushiToken的投票实现
SushiToken继承标准的ERC20,在此基础上,又实现了代币的投票功能。1、数据结构/// @notice A record of each accounts delegate mapping (address => address) internal _delegates; /// @notice A checkpoint for marking number of votes from a given block struct Checkpoint {原创 2021-08-10 13:51:40 · 454 阅读 · 0 评论 -
Safemoon源码解读
Safemoon是一种通缩分红token,通缩指的是每次转账都会收取一定手续费,这些手续费会直接销毁,进而导致总量的通缩。分红指的是,用户的余额会随着其他用户转账而增加。Safemoon的基本原理用一个比喻来说就是,将一块固定蛋糕(_tTotal)分给总量会变化的盘子中(_rTotal),每次转账都会打碎一部分盘子,这样剩余盘子分到的蛋糕就变多了。原创 2021-07-30 17:25:24 · 4478 阅读 · 5 评论 -
Solidity中的mapping为何不提供按照key遍历的功能?
举个例子pragma solidity ^0.6.12;contract Test { mapping(uint256 => uint256) numMap; function testMap() public { numMap[1001] = 1; }}这个Test合约定义了一个mapping数据结构numMap,key和value都是uint256类型使用solc生成汇编:solc --bin --asm --optimize Test.sol原创 2021-04-16 14:53:19 · 944 阅读 · 0 评论 -
SushiSwap的SushiMaker和SushiBar解读
1、SushiMakerSushiMaker的第一个作用是收集SushiSwap的手续费,SushiSwap是基于Uniswap进行扩展的,底层的代码和Uniswap是一样的。而Uniswap每个交易对都是一个UniswapV2Pair,它在执行mint和burn的时候,会计算手续费,这些手续费会以流动性代币的形式发给feeTo这个地址。在SushiSwap中,这个feeTo其实就是SushiMaker合约的地址。SushiMaker的第二个作用就是将收集到的流动性代币转换成Sushi代币,然后发给原创 2021-04-13 15:09:41 · 1766 阅读 · 0 评论 -
SushiSwap的MasterChef解读
1、MasterChef的数据结构MasterChef在SushiSwap中处于核心地位,用户可以通过它进行流动性挖矿。MasterChef中包含两个主要的数据结构:UserInfo和PoolInfo1.1、UserInfostruct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. See ex原创 2021-04-13 14:22:31 · 1416 阅读 · 1 评论 -
Uniswap计算过程推演
0、创建一个交易对假设创建了一个DAI/USDT交易对,其中有一个用户lpUser负责存入和提取交易对,另一个用户swapUser负责交易。1、初始状态原创 2021-04-10 14:56:12 · 2928 阅读 · 1 评论 -
基于双数组实现Set功能(基于Solidity)
1、背景在以太坊NFT中,需要使用Set进行NFT(本质是存的NFT的唯一ID)的存储,以太坊本身没有Set的概念,只有数组。基于单数组实现Set,每次删除value,都需要遍历数组然后逐个调整,由于太坊执行操作需要消耗gas,这种调整比较消耗gas,因此会基于双数组来实现删除功能。2、原理图3、solidity代码实现mapping(address => uint256[]) internal ownerTokens;mapping(uint256 => uint.原创 2021-04-03 10:46:21 · 335 阅读 · 0 评论