tBTC is a trustlessly Bitcoin-backed ERC-20 token.
The goal of the project is to provide a stronger 2-way peg than federated sidechains like Liquid, expanding use cases possible via today’s Bitcoin network, while bringing superior money to other chains.
This repo contains the Solidity smart contracts and specification.
-
Read the introduction to tBTC.
-
Read the specification.
-
Consult Solidity API documentation.
-
For questions and support, join the #tbtc-protocol channel on Discord.
tBTC contracts are currently published in the NPM Registry as the package
@keep-network/tbtc
.
Packages have versions corresponding to their network:
-
-pre
packages contain prerelease packages for the internal Keep testnet. -
-rc
packages contain prerelease packages for the Ropsten Ethereum testnet.
Note that only the latest package in a series is expected to reference contracts that have a backing set of signers.
To install the package:
$ npm install @keep-network/tbtc
NOTE: tBTC contracts require solc v0.5.17 or higher. You may have to
configure
solc in your truffle-config.js
.
Once installed, you can use the contracts in the library by importing them:
pragma solidity ^0.5.17;
import "@keep-network/tbtc/contracts/deposit/Deposit.sol";
contract MySystem {
function checkTerm(address _depositAddress) external {
uint256 remainingTerm = Deposit(_depositAddress).remainingTerm();
}
}
tBTC’s first 6-week audit was completed by ConsenSys Diligence on March 27, 2020, against fbb2018c41. They’ve published a detailed audit report and cryptographic review.
tBTC is currently under audit by two additional parties— Trail of Bits and an unannounced Bitcoin-focused security researcher.
Review a more focused treatment of tBTC’s security model here.
Please report any security issues you find to security@keep.network.
All contributions are welcome. To report bugs, please create an issue on this repository. To start a discussion, prefer Discord over GitHub issues.
Read the Contributing guidelines.
Clone and install dependencies:
git clone https://github.com/keep-network/tbtc
cd tbtc/solidity
npm install
Deploy contracts:
truffle migrate --reset
Tests are written in JS using Mocha.
To run the test suite, execute truffle test
.
To run specific tests, add
.only
to the
contract
block:
contract.only('TBTCToken', function(accounts) {
The documentation includes a project overview and rationale, as well as the on-chain specification. Docs should always be updated before or in tandem with code.
Docs are written in AsciiDoctor, with diagrams in Mermaid.
tBTC is released under the MIT License.