针对TimeLockFi的经济模型设计——金融视角下的贴现交易与累积交易
概述 zhangsi_si 提出的 TimelockFi 在我看来是一个非常好的叙事,于是我借用了传统金融学中的一些理论构建了一套更加完善的经济模型,本文介绍了这一模型的理论基础和基本业务逻辑。目前我正在和另一位朋友实现这个项目,制作一个 CKB 上的特殊交易所。 贴现与累积 TimelockFi 的概念再此不在赘述,不了解的朋友可以去读 zhangsi_si 的文章。 首先,为什么会产生利息、贴现率、收益率这些概念?凯恩斯主义认为,人都具有某种“流动性偏好”。现货或者现金是最具有流动性的资产,每个人都渴望获得更多的现金;与此同时,人们持有存款、股票、期货、房地产等流动性更差的资产,目的就是为了获得比持有现金更大的收益。凯恩斯的理论从现代金融的角度看来是很成问题的,但是如果我们不纠结那些学院派的辩经,..
更多天文学概论 学习笔记
关于 考核:课堂 45% + 期末闭卷考试 55% 考试内容为课堂讲述内容 考试时间: 5 月 14 日校历 12 周星期二 18:30-20:30 主讲:罗佳 [email protected] 助教:胡天阳博士 [email protected] 答疑地点:信息学部第 2 教学楼 308 答疑时间:校历 2-12 周星期二 1-3 节期间 第一讲 天文学史 地球科学 班昭:中国汉代女天文学家 泰勒斯:天圆地方 毕达哥拉斯:从数学的“完美性”出发,认为地球是圆球形的 麦哲伦:环球航行证明地球是球形 亚里士多德:根据月食时月球上阴影的形状,认为地球是圆形的 埃拉托斯特尼:利用亚历山大城和阿斯旺两地正午旗杆长度测定地球半径 天体之间的关系 托勒密:地心说 占星学(Astrolo..
更多Ethernaut 闯关笔记 第12关 Elevator
原始代码 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface Building { function isLastFloor(uint) external returns (bool); } contract Elevator { bool public top; uint public floor; function goTo(uint _floor) public { Building building = Building(msg.sender); if (! building.isLastFloor(_floor)) { ..
更多Solidity 1.0.0 ——下一代智能合约语言中激动人心的改进
导论 在广泛分析诸如 Solidity Github 仓库、 Solidity 发展路线图、 Twitter 上的社群对话、活跃的 Pull Requests 和 Issues 等信息后,本文深入探讨了 Solidity 的未来将会走向何方。 这门领先的智能合约编程语言即将发布 0.9.0 和 1.0.0 升级,其中将推出几项备受期待的增强功能。 本文旨在向读者介绍Solidity的最新发展和改进,这些发展和改进基于社区的投入和正在进行的辩论。虽然提供的相关信息尚无定论,但它揭示了潜在的技术进步方向。 1. 革命性地将 require() 与 Custom Error 进行集成 当前方法(0.8.x): error UnauthorizedAccess(); if (condition) {..
更多Ethernaut 闯关笔记 第11关 Re-entrancy
原始代码 // SPDX-License-Identifier: MIT pragma solidity ^0.6.12; import 'openzeppelin-contracts-06/math/SafeMath.sol'; contract Reentrance { using SafeMath for uint256; mapping(address => uint) public balances; function donate(address _to) public payable { balances[_to] = balances[_to].add(msg.value); } fu..
更多Ethernaut 闯关笔记 第10关 King
原始代码 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract King { address king; uint public prize; address public owner; constructor() payable { owner = msg.sender; king = msg.sender; prize = msg.value; } receive() external payable { require(msg.value >= prize ..
更多Ethernaut 闯关笔记 第9关 Vault
原始代码 攻击思路 1 :反编译并直接读取 storage 合约的 bytecode 为: 0x6080604052348015600f57600080fd5b506004361060325760003560e01c8063cf309012146037578063ec9b5b3a146057575b600080fd5b60005460439060ff1681565b604051901515815260200160405180910390f35b60666062366004607f565b6068565b005b806001541415607c576000805460ff191690555b50565b600060208284031215609057600080fd5b503591905056fea264..
更多Ethernaut 闯关笔记 第8关 Force
原始代码 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Force {/* MEOW ? /\_/\ / ____/ o o \ /~____ =ø= / (______)__m_m) */} 攻击思路 因为该合约没有任何 payable 函数,也没有 receive() 函数,因此不能直接发送交易。 强制调用合约代码,可以使用另一个合约的 selfdestruct() 关键字。 每一个合约都可以通过 selfdestruct(address) 关键字实现自毁,并将剩余的 ETH 余额发送到指定的地址。 注意,ERC-..
更多Ethernaut 闯关笔记 第7关 Delegation
原始代码 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Delegate { address public owner; constructor(address _owner) { owner = _owner; } function pwn() public { owner = msg.sender; } } contract Delegation { address public owner; Delegate delegate; const..
更多Ethernaut 闯关笔记 第6关 Token
原始代码 // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; contract Token { mapping(address => uint) balances; uint public totalSupply; constructor(uint _initialSupply) public { balances[msg.sender] = totalSupply = _initialSupply; } function transfer(address _to, uint _value) public returns (bool) {..
更多