Skip to content

Commit

Permalink
Merge pull request #272 from DefiLlama/feat/rootstock-fastbtc-bridge
Browse files Browse the repository at this point in the history
Feat/rootstock fastbtc bridge
  • Loading branch information
vrtnd authored Aug 27, 2024
2 parents 6930c82 + 143051f commit 41485e7
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/adapters/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ import memebridge from "./memebridge";
import bunnyfi from "./bunnyfi";
import minibridge from "./minibridge";
import cometbridge from "./cometbridge";
import fastbtc from "./rootstock-fastbtc-bridge"

export default {
polygon,
Expand Down Expand Up @@ -133,6 +134,7 @@ export default {
bunnyfi,
minibridge,
cometbridge,
fastbtc
} as {
[bridge: string]: BridgeAdapter;
};
67 changes: 67 additions & 0 deletions src/adapters/rootstock-fastbtc-bridge/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import { BigNumber, ethers } from "ethers";
import { BridgeAdapter, ContractEventParams } from "../../helpers/bridgeAdapter.type";
import { getTxDataFromEVMEventLogs } from "../../helpers/processTransactions";

const bridgeOutFlow = "0x1a8e78b41bc5ab9ebb6996136622b9b41a601b5c";
const bridgeInFlow = "0xe43cafbdd6674df708ce9dff8762af356c2b454d";
const rbtc = "0x542fDA317318eBF1d3DEAf76E0b632741A7e677d";

const outFlowEventParams: ContractEventParams = {
target: bridgeOutFlow,
topic: "NewBitcoinTransfer(bytes32,string,uint256,uint256,uint256,address)",
abi: ["event NewBitcoinTransfer(bytes32 indexed transferId, string btcAddress, uint256 nonce, uint256 amountSatoshi, uint256 feeSatoshi, address indexed rskAddress)"],
logKeys: {
blockNumber: "blockNumber",
txHash: "transactionHash",
},
fixedEventData: {
from: bridgeOutFlow,
token: rbtc,
},
argKeys: {
to: "btcAddress",
amount: "amountSatoshi",
},
isDeposit: false,
};

const inFlowEventParams: ContractEventParams = {
target: bridgeInFlow,
topic: "NewBitcoinTransferIncoming(address,uint256,uint256,bytes32,uint256)",
topics: ["0x20ef15fb02bd69f212d7a84358d8a7c05b65d25bbb920b11c4d32f837118e441"],
abi: ["event NewBitcoinTransferIncoming(address indexed rskAddress, uint256 amountWei, uint256 feeWei, bytes32 btcTxHash, uint256 btcTxVout)"],
logKeys: {
blockNumber: "blockNumber",
txHash: "transactionHash",
},
fixedEventData: {
from: bridgeInFlow,
token: rbtc,
},
argKeys: {
to: "rskAddress",
amount: "amountWei",
},
isDeposit: true,
};

const constructParams = () => {
const eventParams = [outFlowEventParams, inFlowEventParams];
return async (fromBlock: number, toBlock: number) => {
const logs = await getTxDataFromEVMEventLogs("fastbtc", "rsk", fromBlock, toBlock, eventParams);

logs.forEach((log) => {
if (!log.isDeposit) {
log.amount = log?.amount?.mul(1e10)
}
});

return logs;
};
};

const adapter: BridgeAdapter = {
rootstock: constructParams(),
};

export default adapter;
13 changes: 13 additions & 0 deletions src/data/bridgeNetworkData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1469,4 +1469,17 @@ export default [
"x layer": "xlayer",
},
},
{
id: 70,
displayName: "FastBTC",
bridgeDbName: "fastbtc",
iconLink: "icons:sovryn",
largeTxThreshold: 10000,
url: "https://sovryn.com/",
chains: ["Rootstock", "Bitcoin"],
chainMapping: {
rootstock: "rsk",
},
destinationChain: "Bitcoin",
},
] as BridgeNetwork[];
3 changes: 2 additions & 1 deletion src/utils/recordedBlocks.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,5 +71,6 @@
"rainbowbridge:ethereum": { "startBlock": 15443371, "endBlock": 15887866 },
"chainport:aurora": { "startBlock": 73145592, "endBlock": 77620017 },
"rootstock:rsk": { "startBlock": 3616337, "endBlock": 3616337 },
"tokenbrige:rsk": { "startBlock": 4089976, "endBlock": 6088951 }
"tokenbrige:rsk": { "startBlock": 4089976, "endBlock": 6088951 },
"fastbtc:rsk": { "startBlock": 4089976, "endBlock": 6088951 }
}

0 comments on commit 41485e7

Please sign in to comment.