
看我们的新协议 这里
DYdX 边际交易协议使用的Ethereum智能合同源代码
Npm 软件包
Npm包中包含合同的已部署地址,并允许访问嵌入测试容器上的种子位置和订单
安装
npm install --save @dydxprotocol/protocol
合同
import { Margin as MarginContract } from '@dydxprotocol/protocol';
import truffleContract from 'truffle-contract';
async function openPosition(provider, networkId) {
const Margin = truffleContract(MarginContract);
Margin.setProvider(provider);
Margin.setNetwork(networkId);
const margin = await Margin.deployed();
await margin.openPosition(...);
}
种子职位/命令
已有种子位置,并已部署在道克容器上
import { seeds } from '@dydxprotocol/protocol';
const position = seeds.positions[2];
console.log(position.id);
console.log(position.isTokenized);
// Test 0x V1 orders. Maker already has balance and allowance set
const order = seeds.orders[1];
console.log(order.maker);
抓图
在使用道克容器时,可以将evm重置为默认状态. 这在运行自动测试套件时可能有用
import { resetEVM } from '@dydxprotocol/protocol';
await resetEVM(web3.currentProvider);
Docker 容器
多克容器 协议的部署版本运行在一个有网络 id=1212的ganache-cli节点上. Docker 容器版本与本套件的 npm 版本相对应, 因此对两者使用相同的版本
docker pull dydxprotocol/protocol
docker run dydxprotocol/protocol
多克编曲
# docker-compose.yml
version: '3'
services:
protocol:
image: dydxprotocol/protocol:latest
ports:
- 8545:8545
发展
安装
npm install
编译
npm run compile
测试
npm test
林特
打开 Javascript 文件( 测试, 部署脚本)
npm run lint
缩小固态文件( 所有智能合同)
npm run solint
显示固态文件( Custom dYdX linter)
npm run dydxlint
建筑
合同
基本协议
边际. sol
包含利润交易的商业逻辑。 保证金交易的所有外部功能都在本合同中.
TokenProxy.sol (英语)
用于转出用户资金. 用户为授权其转移资金的代理机构设定了代号津贴。 只允许授权的合同转移资金.
断层. 索尔
持有所有象征性基金. 授权通过TokenProxy转账用户资金. 允许授权的合同取出资金.
第二层
ZeroExV1 交换器。 sol
允许使用0x命令打开或关闭位置. 将 0x 交换合同包在一个由 Margin 使用的标准界面中 .
ERC20Short.sol (英语)
允许将短位置作为 ERC20 令牌来表示. 短期债券的所有权赋予了一定比例的支持地位的所有权.
ERC20Long.sol (英语)
允许杠杆长位置被作为ERC20令牌来表示. 杠杆长期象征物的所有权赋予了一定比例的支持地位的所有权.
ERC721 方案. sol
允许将比值位置作为ERC721令牌来表示.
ERC721 马金路. sol
允许贷款作为ERC721令牌进行代理.
荷兰拍卖客户端. sol
允许通过荷兰拍卖自动关闭比值位置.
共享Loan.sol
允许多个出贷人共同分享贷款职位.
更多关于我们的智能合同架构 这里