@abrandec/protocol-monorepo-upgradeable 中文文档教程
Welcome to @superfluid-finance/ethereum-contracts ????
超流体协议的以太坊合约实施
Homepage
✨ Superfluid App
Docs
Usage
如果您正在使用部署的合约(goerli 或主网)构建 dapp,那么您应该改用 @superfluid-finance/js -sdk
。
如果你正在构建一个使用 Superfluid 协议的智能合约, 甚至您自己的 SuperApp,那就太好了! 这绝对是个好地方。
Installation
$ yarn add @superfluid-finance/ethereum-contracts
Smart Contract
可以像这样将合约导入到您的 .sol
文件中:
import { IConstantFlowAgreementV1 } from "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol";
Writing Test
为了编写测试,您可以使用部署脚本来部署所有必要的合约。 目前他们只适用于 web3.js, 我们正在努力在未来支持其他框架。
const deployFramework = require("@superfluid-finance/ethereum-contracts/scripts/deploy-framework");
const deployTestToken = require("@superfluid-finance/ethereum-contracts/scripts/deploy-test-token");
const deploySuperToken = require("@superfluid-finance/ethereum-contracts/scripts/deploy-super-token");
contract("My Test", accounts => {
const [admin, bob, carol, dan] = accounts;
before(async () => {
await deployFramework(errorHandler, {
web3,
from: admin
});
});
beforeEach(async function() {
await deployTestToken(errorHandler, [":", "fDAI"], {
web3,
from: admin
});
await deploySuperToken(errorHandler, [":", "fDAI"], {
web3,
from: admin
});
});
要与协议交互,您应该考虑使用
@superfluid-finance/js-sdk
。 这是一个快速入门示例:
const SuperfluidSDK = require("@superfluid-finance/js-sdk");
let sf;
let daix;
beforeEach(async () => {
await deployTestToken(errorHandler, [":", "fDAI"], {
web3,
from: admin,
});
await deploySuperToken(errorHandler, [":", "fDAI"], {
web3,
from: admin,
});
sf = new SuperfluidSDK.Framework({
web3,
version: "test",
tokens: ["fDAI"],
});
await sf.initialize();
daix = sf.tokens.fDAIx;
// Create user objects
admin = sf.user({ address: adminAddress, token: daix.address });
alice = sf.user({ address: aliceAddress, token: daix.address });
});
太棒了,既然您已经掌握了基础知识,请查看 示例文件夹。
Deploying Superfluid Protocol
Local
部署到你本地的ganache环境:
DISABLE_NATIVE_TRUFFLE=true truffle --network ganache exec "node_modules/@superfluid-finance/ethereum-contracts/scripts/deploy-test-environment.js"
Public
如果你想部署到公共网络:
NEW_TEST_RESOLVER=1 DISABLE_NATIVE_TRUFFLE=true truffle --network goerli exec "node_modules/@superfluid-finance/ethereum-contracts/scripts/deploy-test-environment.js"
注意NEW_TEST_RESOLVER=1
,这是为了避免使用官方解析器地址。 这样做
命令完成后,您应该会看到:
...
======== Super token deployed ========
=============== TEST ENVIRONMENT RESOLVER ======================
export TEST_RESOLVER_ADDRESS=0x43098b8d85Fe90eCE6B055e135759B558d2c0224
运行导出命令以将 TESTRESOLVERADDRESS 保存到您的本地环境。 每当您运行其他测试/脚本时,这将是用于查找 SF 框架合约的地址。
Examples
我们创建了一些此处的示例。 这样你就不必开始一切 从头开始。 克隆一个项目,修改并播放!
Troubleshooting
要记住的一件事是,Superfluid 依赖于持久的 1820 注册合约。 这必须在您可以与协议交互之前部署。 如果您遵循使用部署脚本的示例,则无需担心。
如果您想查看手动部署合约的示例,请查看 scripts 文件夹。
如果您好奇,或者真的想偷懒,您可能需要手动部署注册表。 下面是如何将 1820 合约部署到本地 Ganache 的示例。 (阅读更多关于 EIP 1820 伪内省注册合约)
# Start Ganache on 127.0.0.1:8545
ganache-cli
# Build the contracts + prepare the SDK
yarn build
# Deploy the 1820 contract
cd packages/ethereum-contracts
npx truffle exec scripts/deploy-erc1820.js --network ganache
# Now you can run tests and interact with the protocol
yarn test
Contributing
Setup Development Environment
- Install dependencies
yarn install
- Setup your own
.env
file from.env.template
Testing
有两个主要的测试套件
- Contracts (test/contracts.test.js) tests the contracts
Each contracts test suite is named as
test/{Type}/{ContractName}.test.js
. - Deployment (test/deployment.test.js) tests the deployment script
yarn test
:执行时间很长,您可能想使用 MochaJS 的 exclusive tests 功能来仅隔离您想要的测试。 例如:
# Only run deployment.test.js
nodemon -x npx truffle test ./test/contracts/superfluid/Superfluid.test.js
Show your support
如果这个项目对你有帮助,请给一个⭐️!
此 README 由 readme-md-generator 使用 ❤️ 生成
你可能也喜欢
- 42scalizer 中文文档教程
- @0xcert/ethereum-metamask-provider 中文文档教程
- @11ty/logo 中文文档教程
- @4rk/staticpages-cli 中文文档教程
- @4us-dev/crypto 中文文档教程
- @4xx22/pubsubhubbub 中文文档教程
- @64robots/vue-cli-plugin-validation 中文文档教程
- @a-la/source-map-generator 中文文档教程
- @aabuhijleh/windows-notification-state 中文文档教程
- @abext/relationships 中文文档教程