xiangjie88
- 浏览: 697012 次
- 性别:
- 来自: 深圳
社区版块
- ( 0)
- ( 22)
- ( 48)
最新评论
-
:
zjx20 写道digest[]的字节序貌似是反的,直接输出会 ...
-
:
digest[]的字节序貌似是反的,直接输出会有问题
htt ...
-
:
妹子你砸是 搞c的
-
:
...
文章列表
- 博客分类:
一.solidity
1.evm 不是基于寄存器的,而是基于栈的,因此所有的计算都在一个被称为栈(stack)的区域执行,最大有1024个元素,每个元素长度是一个字(256位)
1.1.收到一个区块时,会遍历里面的所有交易,然后将交易进行applymessage
1.2.取出当前的状态数据库,判断交易是转账还是合约交易
1.3.进到evm后,会先设置一个快照,方便revert后,undo回到快照.
1.4.对合约进行预编译判定,如果有预编译,则由可以执行合约
1.5.如果没有预编译,则由解释器对合约进行解释执行,通过本地的jump_table,取出对应的每一个"脚本"的执行函 ...
- 2023-02-25 14:23
- 浏览 85
- 分类:编程语言
- 博客分类:
tornado:当用户将资金放入资金池(也称为存款)时,会生成一张私人票据。该私人笔记用作用户以后访问这些资金的私钥。要提取它们,同一用户可以使用不同的地址——旧地址或新地址——并通过这个私钥收回他/她的资金
存钱
5.1 链下计算好一个secret给用户,拥有这个数据相当于有提款的权利
5.1 链下计算要提交的数据(commitment)
const preimage = secret nullifier;
const commitment = pedersenhash(preimage);
5.2 存钱的时候将byte32的commitment数据上传,并将其作为叶子节点插入到一个m ...
- 2023-02-23 16:51
- 浏览 83
- 分类:开源软件
- 博客分类:
opensea:其中链下的订单簿负责存储用户的挂单信息,并对订单进行撮合。最终的成交和转移 nft 是由 seaport protocol 来负责的。
seaport 采取了一种不同的方法:offerer 可以同意提供一定数量的 eth/erc20/erc721/erc1155 项目--这就是 offer。为了使该offer被接受,offerer必须收到一定数量的物品,这就是 consideration。
当 offer 是 erc721/erc1155 的时候,offerer 就是卖家,卖出 erc721/erc1155 来换取 eth/erc20。
当 offer 是 eth/erc20 ...
- 2023-02-23 16:49
- 浏览 85
- 分类:开源软件
- 博客分类:
// contracts/box.sol
// spdx-license-identifier: mit
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/address.sol";
import "hardhat/console.sol";
contract mytestcontract {
function foo(uint i) view external {
console.log("foo",i);
...
- 2023-02-23 10:50
- 浏览 84
- 分类:开源软件
- 博客分类:
9.gmx:去中心化amm合约交易所,在arbitrum和avalanche网络发行版本,最高允许30倍杠杆.同时也支持swap,只不过用的是预言机的价格,所以没有无偿损失
9.1 用户类型:
散户和lp提供者,相当于散户和lp对赌的期货合约交易所,因为做合约输的机� ...
- 2023-02-22 17:57
- 浏览 90
- 分类:开源软件
- 博客分类:
8.lido
8.1 lido收集到用户的 eth 后,会每次在以太坊智能合约上质押32个eth,dao就会从治理控制的注册表中选择一个新的验证者。然后调用存款合约,将32个eth 分配给该验证人,并生成 lido dao 的提款凭证。
8.2 在lido 中,steth 持有只能获得以太坊2.0质押奖励的 90%,5%分配给 lido 的节点运营商,5%给lido金库
8.3 lido的sttokens有两个版本,分别是steth和wsteth。这两种代币都是 erc-20 代币,但它们以不同的方式反映了应计的质押奖励。
steth 实施变基机制,这意味着 steth 余额会定期增加。
wst ...
- 2023-02-21 16:49
- 浏览 76
- 分类:开源软件
- 博客分类:
7.dydx采用链下撮合链上结算的订单稀释模式,架设在以太坊二层网络starkware上,采用了starkex交易引擎,实现了资产的去中心化自托管
7.1 订单簿模式,下单和挂单是中心化的
7.2 在安全和私密性上,starkware的二层技术通过零识证明提高了安全性和隐私性,引擎不开源,去中心化程度不高
7.3 需要创建账户和充值usdc,eth...,项目方和coinbase有一定关链,使用的是usdc,杠杆最高20倍
7.4 项目方通过交易手续费获得收入,手续费比例最高为0.1%,可通过质押平台代币获得折扣,项目也通过交易挖矿等手段来激励交易量。交易挖矿会持续存在,每月为一个纪元,会有固定 ...
- 2023-02-20 16:45
- 浏览 85
- 分类:开源软件
- 博客分类:
beacon
a.implementation地址并不存放在proxy合约里,而是存放在beacon合约里,proxy合约里存放的是beacon合约的地址
b.在合约交互的时候,用户同样是和proxy合约打交道,不过此时因为proxy合约中并未保存implementation地址,所以它要先访问beacon合约获取implementation地址,然后再通过delegatecall调用implementation。
c.在合约升级的时候,管理员并不需要和proxy合约打交道,而只需要交互beacon合约,把beacon合约存储的implementation改掉就行了。
d.就是多个proxy共享 ...
- 2023-02-20 11:45
- 浏览 83
- 分类:编程语言
- 博客分类:
a.proxy直接把所有的请求都通过delegatecall丢给implementation(如果是升级,implementation的升级函数会确认一下是否为管理员)
b.需要实现_authorizeupgrade函数以确保只有管理员账户可以进行升级
c.升级函数upgradeto在implementation合约中
// spdx-license-identifier: mit
pragma solidity >= 0.8.0;
import "@openzeppelin/contracts-upgradeable/proxy/utils/initializab ...
- 2023-02-17 16:16
- 浏览 95
- 分类:编程语言
- 博客分类:
transparent:
a.如果proxy合约发现自己被proxyadmin合约调用,那么它会调用自身的函数代码;如果调用者是proxyadmin之外的账户,那么它会通过delegatecall去调用implementation的代码。这样就保障了合约升级的安全性。
b.升级函数在proxy里面,proxy里面的函数基本都有ifadmin修饰符校验
transparentadmin.sol
// spdx-license-identifier: mit
pragma solidity >= 0.8.0;
import "@openzeppelin/contracts/ ...
- 2023-02-16 15:44
- 浏览 84
- 分类:编程语言
- 博客分类:
const data = buffer.from('');//string转bytes
let a = ethers.utils.formatbytes32string("6"); //string转bytes32
- 2023-02-16 11:04
- 浏览 128
- 分类:编程语言
- 博客分类:
1.前置准备,运行一个新项目
mkdir my-project
cd my-project
npm init --yes
npm install --save-dev hardhat@2.8.2 -g
npm install --save-dev @nomiclabs/hardhat-truffle5 @nomiclabs/hardhat-web3 web3
2.console.log
适用于view,但不适用于pure,最多调用uint,string,bool,address4个参数
3.编译
npx hardhat compile
强制编译
npx hardhat compile --f ...
- 2023-02-13 09:58
- 浏览 174
- 分类:开源软件
- 博客分类:
2.compound
2.1 存钱:不会1:1给ctoken,是1:50左右的比例,最开始是1/0.02,把用户转账过来的token存到资金池里,根据当前时刻的汇率给用户发放ctoken
2.2 抵押系数:对于抵押品ctoken来说每个市场都有一个抵押系数(collateral factor,或者叫抵押� ...
- 2023-02-09 22:01
- 浏览 79
- 分类:开源软件
- 博客分类:
aave:去中心化借贷系统,aave借款人必须先提供抵押品才能借款。此外,他们只能借到他们发布的抵押品的价值。
1.用户抵押获取1:1的atoken,作为凭证.并且atoken无法交易
2.当用户从协议中贷出资产,获得 1:1 数量的 debt tokens.其中包括稳定利率债务币和浮动利率债务币
(usersstablerate * currentbalance amount * rate) / (currentbalance amount)
2.1 固定利率借贷:用户以固定利率借贷资产,将以当前固定利率来计息,不随市场波动,但不同时间贷款的固定利率可能是不同的,任何人每借一次钱, ...
- 2023-02-09 21:57
- 浏览 67
- 分类:开源软件
- 博客分类:
multicall的solidity调用与ethers.js调用
// contracts/box.sol
// spdx-license-identifier: mit
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/multicall.sol";
import "hardhat/console.sol";
contract testmulticall {
function testmulticall(address addr) external ...
- 2023-01-31 20:11
- 浏览 121
- 分类:编程语言
« 上一页 1 …