@finmath.net/sdc
v0.8.0
Published
Solidity Smart Derivative Contracts
Downloads
20
Maintainers
Readme
SDC Solidity implementation
Description
The reference SDC implementation can be unit tested with Hardhat to understand the trade process logic.
Compile and run tests with Hardhat
We provide the essential steps to compile the contracts and run the provided unit tests.
Provided Contracts and Tests
Interfaces
contracts/ISDC.sol- Interface contract (aggregation ofISDCTrade,ISDCSettlement,IAsyncTransferCallback)contracts/ISDCTrade.sol- Interface related to trade incept/confirm/terminatecontracts/ISDCSettlement.sol- Interface related to settlement initiate/perform/aftercontracts/IAsyncTransferCallback.sol- Interface related to transfer.contracts/IAsyncTransfer.sol- Interface (extending the ERC-20) for settlement tokens used inSDCPledgedBalance.
Implementations
contracts/SDCSingleTrade.sol- SDC abstract contract for an OTC Derivative (single trade case only)contracts/SDCSingleTradePledgedBalance.sol- SDC full implementation for an OTC Derivative (single trade case only)contracts/ERC20Settlement.sol- Mintable settlement token contract implementingIERC20Settlementfor unit tests
Tests
test/SDCTests.js- Unit tests for the life-cycle of the sdc implementation
Compile and run tests with Hardhat
Install dependencies:
npm iCompile:
npx hardhat compileRun all tests:
npx hardhat testConfiguration files
package.js- Javascript package definition.hardhat.config.js- Hardhat config.
Used javascript-based testing libraries for solidity
ethereum-waffle: Waffle is a Solidity testing library. It allows you to write tests for your contracts with JavaScript.chai: Chai is an assertion library and provides functions like expect.ethers: This is a popular Ethereum client library. It allows you to interface with blockchains that implement the Ethereum API.solidity-coverage: This library gives you coverage reports on unit tests with the help of Istanbul.
Version history / release notes
0.8.0
- Re-introduced the method
afterSettlementthat can be used to check pre-conditions of the next settlement cycle, e.g., triggered by a time-oracle.
