मुख्य सामग्री पर जाएं
Tenderly SDK आपके Tenderly project से जुड़े contracts का प्रबंधन करने के लिए एक ContractRepository क्लास प्रदान करता है। ContractRepository आपको contracts जोड़ने, अपडेट करने, और हटाने के साथ-साथ उन्हें वेरिफ़ाई करने की अनुमति देता है। Tenderly SDK इनिशियलाइज़ होने के साथ, आप ContractRepository इंस्टेंस को एक्सेस करने के लिए contracts namespace का उपयोग कर सकते हैं। उसी project में wallets का प्रबंधन करने के लिए, Managing Wallets देखें।

एक contract जोड़ना

एक नया contract जोड़ने के लिए, contracts namespace की add मेथड का उपयोग करें:
example.jsx
try {
  const contractAddress = '0x742d35Cc6634C0532925a3b844Bc454e4438f44e';
  const contract = await tenderly.contracts.add(contractAddress, {
    displayName: 'MyContract',
  });

  console.log('Added contract:', addedContract);
} catch (error) {
  console.error('Error adding contract:', error);
}

एक contract अपडेट करना

एक मौजूदा contract को अपडेट करने के लिए, contracts namespace की update मेथड का उपयोग करें:
example.jsx
try {
  const contractAddress = '0x742d35Cc6634C0532925a3b844Bc454e4438f44e';
  const contract = await tenderly.contracts.update(contractAddress, {
    displayName: 'My Contract',
  });
  console.log('Updated contract:', contract);
} catch (error) {
  console.error('Error updating contract:', error);
}

एक contract हटाना

एक contract हटाने के लिए, contracts namespace की remove मेथड का उपयोग करें:
example.jsx
try {
  const contractAddress = '0x742d35Cc6634C0532925a3b844Bc454e4438f44e';
  await tenderly.contracts.remove(contractAddress);
  console.log('Contract removed successfully');
} catch (error) {
  console.error('Error removing contract:', error);
}

एक contract वेरिफ़ाई करना

एक contract वेरिफ़ाई करने के लिए, आप contracts namespace की verify मेथड का उपयोग कर सकते हैं। तीन उदाहरण हैं जो tenderly.contracts.verify मेथड के उपयोग को दिखाते हैं:
  • पहला उदाहरण बिना किसी निर्भरता के एक साधारण Counter contract के सत्यापन को दिखाता है।
  • दूसरा उदाहरण एक MyToken contract के सत्यापन को दिखाता है जिसमें कई निर्भरताएं हैं जो अन्य contracts हैं।
  • तीसरा उदाहरण एक LibraryToken contract के सत्यापन को दिखाता है जिसमें एक लाइब्रेरी निर्भरता है।
आप इन उदाहरणों को हमारे tenderly-sdk repo के examples folder में उन्हें शुरू करने के निर्देशों के साथ पा सकते हैं। यहां केवल कुछ निर्भरताओं वाला MyToken contract दिखाया जाएगा ताकि आप देख सकें कि उन्हें कैसे आयात करना है:
example.js
const myTokenAddress = `0x1a273A64C89CC45aBa798B1bC31B416A199Be3b3`.toLowerCase() as Web3Address;
const ROOT_FOLDER = `examples/contractVerification/withDependencies/contracts`;

const tenderly = new Tenderly({
  accessKey: process.env.TENDERLY_ACCESS_KEY || ``,
  accountName: process.env.TENDERLY_ACCOUNT_NAME || ``,
  projectName: process.env.TENDERLY_PROJECT_NAME || ``,
  network: Network.SEPOLIA,
});

const result = await tenderly.contracts.verify(myTokenAddress, {
  config: {
    mode: `public`,
  },
  contractToVerify: `${ROOT_FOLDER}/MyToken.sol:MyToken`,
  solc: {
    version: `v0.8.19`,
    sources: {
      [`${ROOT_FOLDER}/MyToken.sol`]: {
        content: readFileSync(`${ROOT_FOLDER}/MyToken.sol`, `utf8`),
      },
      [`@openzeppelin/contracts/token/ERC20/ERC20.sol`]: {
        content: readFileSync(`${ROOT_FOLDER}/ERC20.sol`, `utf8`),
      },
      [`@openzeppelin/contracts/token/ERC20/IERC20.sol`]: {
        content: readFileSync(`${ROOT_FOLDER}/IERC20.sol`, `utf8`),
      },
      [`@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol`]: {
        content: readFileSync(`${ROOT_FOLDER}/IERC20Metadata.sol`, `utf8`),
      },
      [`@openzeppelin/contracts/utils/Context.sol`]: {
        content: readFileSync(`${ROOT_FOLDER}/Context.sol`, `utf8`),
      },
    },
    settings: {
      optimizer: {
        enabled: true,
        runs: 200,
      },
    },
  },
});

console.log(`Result:`, result);