RSK Bridge 智能合约的 Solidity 接口是什么?

7al*_*lip 6 solidity rsk

RSK Bridge 通过部署在0x1000006. 我能够在 github 上找到Bridge 的 ABI 文件

我正在寻找一个 Solidity 接口文件 - 有没有可用的,如果有,我在哪里可以找到它?

Ale*_*hin 7

由于您有 ABI,请将其放入名为 \xe2\x80\x98bridge.json\xe2\x80\x99 的文件中。将以下脚本复制到同一文件夹中的文件,然后在终端命令行中启动它,如下所示:\xe2\x80\x98node filename.js\xe2\x80\x99。然后在同一文件夹中的文件 \xe2\x80\x98Bridge.sol\xe2\x80\x99 中找到你的 Solidity Bridge 接口。您需要在系统中安装 node.js 才能运行此脚本。

\n
const fs = require('fs')\n/** Name of the bridge ABI file */\nconst bridgeABI = require('./bridge.json')\n/** Filename for the generated Solidity bridge interface file */\nconst BRIDGE_SOL = 'Bridge.sol'\n\xe2\x80\x8b\nconst functions = bridgeABI.filter((element) => element.type === 'function')\nconst stream = fs.createWriteStream(BRIDGE_SOL)\nstream.write(`// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.7.0 <0.9.0;\n\xe2\x80\x8b\ninterface Bridge {\n`)\nfunctions.forEach((f) => {\n  // function parameters\n  const inputs = f.inputs\n    .map((i) => {\n      // add 'calldata' to the following types\n      const type = ['bytes', 'bytes[]', 'bytes32[]', 'string'].includes(i.type)\n        ? `${i.type} calldata`\n        : i.type\n      return `${type} _${i.name}`\n    })\n    .join(', ')\n  // function return values\n  const outputs = f.outputs\n    .map((o) => {\n      // add 'memory' to the following types\n      const type = ['bytes', 'string'].includes(o.type)\n        ? `${o.type} memory`\n        : o.type\n      return `${type}${o.name ? ` ${o.name}` : ''}`\n    })\n    .join(', ')\n  // record a single function signature\n  stream.write(\n    `    ${f.type} ${f.name}(${inputs}) external${f.constant ? ' view' : ''}${\n      outputs ? ` returns (${outputs})` : ''\n    };\\n`,\n  )\n})\nstream.write('}\\n')\nstream.end()\nconsole.log(`The bridge was generated. Find it in the file ${BRIDGE_SOL}`)\n
Run Code Online (Sandbox Code Playgroud)\n

这是由上面的脚本生成的界面:

\n
// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.7.0 <0.9.0;\n\ninterface Bridge {\n    function getBtcBlockchainBestChainHeight() external view returns (int);\n    function getStateForBtcReleaseClient() external view returns (bytes memory);\n    function getStateForDebugging() external view returns (bytes memory);\n    function getBtcBlockchainInitialBlockHeight() external view returns (int);\n    function getBtcBlockchainBlockHashAtDepth(int256 _depth) external view returns (bytes memory);\n    function getBtcTxHashProcessedHeight(string calldata _hash) external view returns (int64);\n    function isBtcTxHashAlreadyProcessed(string calldata _hash) external view returns (bool);\n    function getFederationAddress() external view returns (string memory);\n    function registerBtcTransaction(bytes calldata _tx, int256 _height, bytes calldata _pmt) external view;\n    function addSignature(bytes calldata _pubkey, bytes[] calldata _signatures, bytes calldata _txhash) external view;\n    function receiveHeaders(bytes[] calldata _blocks) external view;\n    function receiveHeader(bytes calldata _block) external view returns (int256);\n    function getFederationSize() external view returns (int256);\n    function getFederationThreshold() external view returns (int256);\n    function getFederatorPublicKey(int256 _index) external view returns (bytes memory);\n    function getFederatorPublicKeyOfType(int256 _index, string calldata _type) external view returns (bytes memory);\n    function getFederationCreationTime() external view returns (int256);\n    function getFederationCreationBlockNumber() external view returns (int256);\n    function getRetiringFederationAddress() external view returns (string memory);\n    function getRetiringFederationSize() external view returns (int256);\n    function getRetiringFederationThreshold() external view returns (int256);\n    function getRetiringFederatorPublicKey(int256 _index) external view returns (bytes memory);\n    function getRetiringFederatorPublicKeyOfType(int256 _index, string calldata _type) external view returns (bytes memory);\n    function getRetiringFederationCreationTime() external view returns (int256);\n    function getRetiringFederationCreationBlockNumber() external view returns (int256);\n    function createFederation() external returns (int256);\n    function addFederatorPublicKey(bytes calldata _key) external returns (int256);\n    function addFederatorPublicKeyMultikey(bytes calldata _btcKey, bytes calldata _rskKey, bytes calldata _mstKey) external returns (int256);\n    function commitFederation(bytes calldata _hash) external returns (int256);\n    function rollbackFederation() external returns (int256);\n    function getPendingFederationHash() external view returns (bytes memory);\n    function getPendingFederationSize() external view returns (int256);\n    function getPendingFederatorPublicKey(int256 _index) external view returns (bytes memory);\n    function getPendingFederatorPublicKeyOfType(int256 _index, string calldata _type) external view returns (bytes memory);\n    function getLockWhitelistSize() external view returns (int256);\n    function getLockWhitelistAddress(int256 _index) external view returns (string memory);\n    function getLockWhitelistEntryByAddress(string calldata _address) external view returns (int256);\n    function addLockWhitelistAddress(string calldata _address, int256 _maxTransferValue) external returns (int256);\n    function addOneOffLockWhitelistAddress(string calldata _address, int256 _maxTransferValue) external returns (int256);\n    function addUnlimitedLockWhitelistAddress(string calldata _address) external returns (int256);\n    function removeLockWhitelistAddress(string calldata _address) external returns (int256);\n    function setLockWhitelistDisableBlockDelay(int256 _disableDelay) external returns (int256);\n    function getFeePerKb() external view returns (int256);\n    function voteFeePerKbChange(int256 _feePerKb) external returns (int256);\n    function updateCollections() external;\n    function getMinimumLockTxValue() external view returns (int256);\n    function getBtcTransactionConfirmations(bytes32 _txHash, bytes32 _blockHash, uint256 _merkleBranchPath, bytes32[] calldata _merkleBranchHashes) external view returns (int256);\n    function getLockingCap() external view returns (int256);\n    function increaseLockingCap(int256 _newLockingCap) external view returns (bool);\n    function registerBtcCoinbaseTransaction(bytes calldata _btcTxSerialized, bytes32 _blockHash, bytes calldata _pmtSerialized, bytes32 _witnessMerkleRoot, bytes32 _witnessReservedValue) external view;\n    function hasBtcBlockCoinbaseTransactionInformation(bytes32 _blockHash) external view returns (bool);\n    function registerFastBridgeBtcTransaction(bytes calldata _btcTxSerialized, uint256 _height, bytes calldata _pmtSerialized, bytes32 _derivationArgumentsHash, bytes calldata _userRefundBtcAddress, address _liquidityBridgeContractAddress, bytes calldata _liquidityProviderBtcAddress, bool _shouldTransferToContract) external view returns (int256);\n    function getActiveFederationCreationBlockHeight() external view returns (uint256);\n    function getBtcBlockchainBestBlockHeader() external view returns (bytes memory);\n    function getBtcBlockchainBlockHeaderByHash(bytes32 _btcBlockHash) external view returns (bytes memory);\n    function getBtcBlockchainBlockHeaderByHeight(uint256 _btcBlockHeight) external view returns (bytes memory);\n    function getBtcBlockchainParentBlockHeaderByHash(bytes32 _btcBlockHash) external view returns (bytes memory);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

  • 该脚本看起来在 RSK 桥以外的上下文中可能很有用! (2认同)