@finmath.net/sdc
Version:
Solidity Smart Derivative Contracts
49 lines (33 loc) • 1.68 kB
Markdown
# 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
- `contracts/ISDC.sol` - Interface contract
- `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/IERC20Settlement.sol` - Interface (extending the ERC-20) for settlement tokens used in `SDCPledgedBalance`.
- `contracts/ERC20Settlement.sol` - Mintable settlement token contract implementing `IERC20Settlement` for unit tests
- `test/SDCTests.js` - Unit tests for the life-cycle of the sdc implementation
### Compile and run tests with Hardhat
Install dependencies:
```shell
npm i
```
Compile:
```shell
npx hardhat compile
```
Run all tests:
```shell
npx hardhat test
```
### Configuration 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.