Skip to content
This repository has been archived by the owner on Jun 4, 2024. It is now read-only.

Commit

Permalink
New Crowdin updates (#671)
Browse files Browse the repository at this point in the history
* New translations oracles.md (Vietnamese)

* New translations particle.md (Vietnamese)

* New translations oracles.md (Japanese)

* New translations oracles.md (Korean)

* New translations particle.md (Japanese)

* New translations particle.md (Korean)

* New translations why-klaytn.md (Korean)

* New translations chaindata-change.md (Vietnamese)

* New translations chaindata-migration.md (Vietnamese)

* New translations why-klaytn.md (Korean)

* New translations particle.md (Vietnamese)

* New translations particle.md (Japanese)

* New translations particle.md (Korean)

* New translations before-you-start.md (Japanese)

* New translations ken.md (Japanese)

* New translations computation-cost.md (Japanese)

* New translations execution-model.md (Japanese)

* New translations precompiled-contracts.md (Japanese)

* New translations kni.md (Japanese)

* New translations transactions.md (Japanese)

* New translations faq.md (Japanese)

* New translations node-log.md (Japanese)

* New translations install-consensus-nodes.md (Japanese)

* New translations install-proxy-nodes.md (Japanese)

* New translations v0.9.6.md (Japanese)

* New translations endpoint-node.md (Japanese)

* New translations install-endpoint-nodes.md (Japanese)

* New translations json-rpc-apis.md (Japanese)

* New translations ken-cli-commands.md (Japanese)

* New translations install-service-chain.md (Japanese)

* New translations upgrade-and-hard-fork.md (Japanese)

* New translations account.md (Japanese)

* New translations config.md (Japanese)

* New translations filter.md (Japanese)

* New translations governance.md (Japanese)

* New translations klay.md (Japanese)

* New translations public-en.md (Japanese)

* New translations before-you-start.md (Korean)

* New translations ken.md (Korean)

* New translations computation-cost.md (Korean)

* New translations execution-model.md (Korean)

* New translations precompiled-contracts.md (Korean)

* New translations kni.md (Korean)

* New translations transactions.md (Korean)

* New translations faq.md (Korean)

* New translations node-log.md (Korean)

* New translations install-consensus-nodes.md (Korean)

* New translations install-proxy-nodes.md (Korean)

* New translations v0.9.6.md (Korean)

* New translations endpoint-node.md (Korean)

* New translations install-endpoint-nodes.md (Korean)

* New translations json-rpc-apis.md (Korean)

* New translations ken-cli-commands.md (Korean)

* New translations install-service-chain.md (Korean)

* New translations upgrade-and-hard-fork.md (Korean)

* New translations account.md (Korean)

* New translations config.md (Korean)

* New translations filter.md (Korean)

* New translations governance.md (Korean)

* New translations klay.md (Korean)

* New translations public-en.md (Korean)

* New translations before-you-start.md (Vietnamese)

* New translations ken.md (Vietnamese)

* New translations computation-cost.md (Vietnamese)

* New translations execution-model.md (Vietnamese)

* New translations precompiled-contracts.md (Vietnamese)

* New translations kni.md (Vietnamese)

* New translations transactions.md (Vietnamese)

* New translations faq.md (Vietnamese)

* New translations node-log.md (Vietnamese)

* New translations install-consensus-nodes.md (Vietnamese)

* New translations install-proxy-nodes.md (Vietnamese)

* New translations v0.9.6.md (Vietnamese)

* New translations endpoint-node.md (Vietnamese)

* New translations install-endpoint-nodes.md (Vietnamese)

* New translations json-rpc-apis.md (Vietnamese)

* New translations ken-cli-commands.md (Vietnamese)

* New translations install-service-chain.md (Vietnamese)

* New translations upgrade-and-hard-fork.md (Vietnamese)

* New translations account.md (Vietnamese)

* New translations config.md (Vietnamese)

* New translations filter.md (Vietnamese)

* New translations governance.md (Vietnamese)

* New translations klay.md (Vietnamese)

* New translations public-en.md (Vietnamese)

* New translations particle.md (Vietnamese)

* New translations particle.md (Japanese)

* New translations particle.md (Korean)

* New translations foundry.md (Japanese)

* New translations klaytngreeter.md (Japanese)

* New translations web3auth.md (Japanese)

* New translations web3modal.md (Japanese)

* New translations web3onboard.md (Japanese)

* New translations klaytn-history.md (Japanese)

* New translations ether-js.md (Japanese)

* New translations web3-js.md (Japanese)

* New translations privy.md (Japanese)

* New translations viem.md (Japanese)

* New translations foundry.md (Korean)

* New translations klaytngreeter.md (Korean)

* New translations web3auth.md (Korean)

* New translations web3modal.md (Korean)

* New translations web3onboard.md (Korean)

* New translations klaytn-history.md (Korean)

* New translations ether-js.md (Korean)

* New translations web3-js.md (Korean)

* New translations privy.md (Korean)

* New translations viem.md (Korean)

* New translations foundry.md (Vietnamese)

* New translations klaytngreeter.md (Vietnamese)

* New translations web3auth.md (Vietnamese)

* New translations web3modal.md (Vietnamese)

* New translations web3onboard.md (Vietnamese)

* New translations klaytn-history.md (Vietnamese)

* New translations ether-js.md (Vietnamese)

* New translations web3-js.md (Vietnamese)

* New translations privy.md (Vietnamese)

* New translations viem.md (Vietnamese)

* New translations block-explorers.md (Japanese)

* New translations hardhat.md (Japanese)

* New translations block-explorers.md (Korean)

* New translations hardhat.md (Korean)

* New translations block-explorers.md (Vietnamese)

* New translations hardhat.md (Vietnamese)

* New translations system-requirements.md (Japanese)

* New translations system-requirements.md (Japanese)

* New translations system-requirements.md (Korean)

* New translations system-requirements.md (Korean)

* New translations system-requirements.md (Vietnamese)

* New translations system-requirements.md (Vietnamese)

* New translations particle.md (Vietnamese)

* New translations particle.md (Japanese)

* New translations particle.md (Korean)

* New translations learn.md (Korean)

* New translations token-economy.md (Japanese)

* New translations token-economy.md (Korean)

* New translations token-economy.md (Vietnamese)

* New translations readme.md (Japanese)

* New translations sidebar.ts (Japanese)

* New translations sidebar.ts (Japanese)

* New translations sidebar.ts (Japanese)

* New translations sidebar.ts (Japanese)

* New translations sidebar.ts (Japanese)

* New translations sidebar.ts (Japanese)

* New translations sidebar.ts (Japanese)

* New translations sidebar.ts (Japanese)

* New translations sidebar.ts (Japanese)

* New translations sidebar.ts (Japanese)

* New translations readme.md (Korean)

* New translations sidebar.ts (Korean)

* New translations sidebar.ts (Korean)

* New translations sidebar.ts (Korean)

* New translations sidebar.ts (Korean)

* New translations sidebar.ts (Korean)

* New translations sidebar.ts (Korean)

* New translations sidebar.ts (Korean)

* New translations sidebar.ts (Korean)

* New translations sidebar.ts (Korean)

* New translations sidebar.ts (Korean)

* New translations readme.md (Vietnamese)

* New translations sidebar.ts (Vietnamese)

* New translations sidebar.ts (Vietnamese)

* New translations sidebar.ts (Vietnamese)

* New translations sidebar.ts (Vietnamese)

* New translations sidebar.ts (Vietnamese)

* New translations sidebar.ts (Vietnamese)

* New translations sidebar.ts (Vietnamese)

* New translations sidebar.ts (Vietnamese)

* New translations sidebar.ts (Vietnamese)

* New translations sidebar.ts (Vietnamese)

* New translations decentralizing-governance.md (Japanese)

* New translations token-economy.md (Japanese)

* New translations decentralizing-governance.md (Korean)

* New translations token-economy.md (Korean)

* New translations decentralizing-governance.md (Vietnamese)

* New translations token-economy.md (Vietnamese)

* Update why-klaytn.md to prevent mdx build error

* Update web3Modal.md to prevent mdx build error

* Update web3Modal.md to prevent mdx build error

---------

Co-authored-by: Scott Lee <[email protected]>
  • Loading branch information
klaytndocs and scott-klaytn authored Mar 22, 2024
1 parent 9e0a687 commit 45de4ba
Show file tree
Hide file tree
Showing 161 changed files with 1,749 additions and 348 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
**Endpoint Node**

- Your [Endpoint Node](../../nodes/endpoint-node/endpoint-node.md) is needed to connect to the Klaytn network and to issue an API call or send a transaction.
- `ken` is a Klaytn Endpoint Node binary. `ken` exposes two interfaces, a [command-line interface](../../nodes/endpoint-node/ken-cli-commands.md) and the [JSON-RPC APIs](../../references/json-rpc/json-rpc.md). `ken` runs on Linux and MacOS.
- `ken` is a Klaytn Endpoint Node binary. `ken` exposes two interfaces, a [command-line interface](../../nodes/endpoint-node/ken-cli-commands.md) and the [JSON-RPC APIs](../../../references/json-rpc/klay/account-created). `ken` runs on Linux and MacOS.
- `ken` CLI comes with several utility and node management functions.

**Smart Contract Development**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -357,4 +357,4 @@ cast call $oUSDC \
![](/img/build/get-started/oUsdcHolderAfter.png)
For more in-depth guide on foundry, please refer to [Foundry Docs](https://book.getfoundry.sh/). Also, you can find the full implementation of the code for this guide on [GitHub](https://github.com/klaytn/examples/tree/main/foundry).
For more in-depth guide on foundry, please refer to [Foundry Docs](https://book.getfoundry.sh/). Also, you can find the full implementation of the code for this guide on [GitHub](https://github.com/klaytn/examples/tree/main/tools/foundry).
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ UTC--2019-06-24T11-20-15.590879000Z--75a59b94889a05c03c66c3c84e9d2f8308ca4abd

To unlock the created account, execute the following command. It unlocks the account for 300 seconds.

**Note**: If you want to manually set the unlock duration, refer to this [link](../../../references/json-rpc/personal.md#personal_unlockaccount).
**Note**: If you want to manually set the unlock duration, refer to this [link](../../../../references/json-rpc/personal/unlock-account).

**`WARNING`**: Unlocking an account could be very dangerous if not done carefully. There are chances that your tokens will be taken away by hackers if your EN is hacked by a hacker. To use safer method, refer to this [deployment guide using private key](../../tutorials/count-dapp/deploy-contracts.md#deploy-method-1-by-private-key)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,4 @@ contract KlaytnGreeter is Mortal {
For the details of contract deployment and the Remix Online IDE usage guideline, please refer to the following documents.

- [Remix Online IDE](../../smart-contracts/ide-and-tools/ide-and-tools.md#klaytn-ide)
- [Truffle](../../smart-contracts/ide-and-tools/ide-and-tools.md##truffle)
- [Deploy Guide](../deploy/deploy.md)
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
---
sidebar_label: Using Block Explorers
---

# How to verify Smart Contracts Using Block Explorers

## Introduction

Usually, the deployer of a smart contract is the only party with access to the code that was actually deployed, and the public cannot read the source code of a contract until the deployer has verified it. However, this is where contract verification comes in as an important step in the smart-contract development cycle, as it helps improve the transparency (for users), convenience (for developers), and security of deployed contracts.

Having said that, once a smart contract is validated, block explorers like Klaytnscope and Klaytnfinder also make it possible for the public to interact with the contract's public methods using the block explorer's user interface. This is in addition to the public having direct access to the verified contract source code.

In this guide, we'll take a look at how to use block explorers to verify deployed smart contracts on the Klaytn Network.

## Prerequisites

- [Remix IDE](https://ide.klaytn.foundation/) and [Kaikas Wallet](https://kaikas.zendesk.com/hc/en-us/articles/6657796272793-How-do-I-install-PC-Kaikas-)
- Enough test KLAY from [faucet](https://baobab.wallet.klaytn.foundation/faucet)

## Getting Started

In this guide, we will be going over verifying both single contracts and multi-part contracts on the block explorers that exist in the Klaytn ecosystem, viz.:

- [Klaytnscope](http://scope.klaytn.com)
- [Klaytnfinder](https://www.klaytnfinder.io/)

Without further ado, let's get started!

## Deploying a single Contract

To verify a smart contract, you need to deploy the contract first on the target network. Hence, for the sake of this guide, we will be deploying the contract to Klaytn Baobab Testnet. Also, in this tutorial, we will be deploying a simple counter contract named `Counter.sol` on Remix IDE. The code is shown below:

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Counter {
uint256 public count;
constructor(uint256 _initialCount) {
count = _initialCount;
}
function incrementCounter() public {
count++;
}
function decrementCounter() public {
count--;
}
function resetCounter() public {
count = 0;
}
}
```

:::note

You can check this page for a tutorial on deploying smart contracts using [libraries](../../references/sdk/sdk.md) on Klaytn Baobab Testnet. You may also use a developer tool such as [Hardhat](../get-started/hardhat.md), [Foundry](../smart-contracts/deploy/foundry.md), [Remix](../smart-contracts/deploy/deploy.md#remix-ide) or another tool if preferred, to deploy the smart contract to Klaytn Baobab Testnet.

:::

## Parameters for single contract verification

Verifying a contract on the block explorers requires some parameters, and these must be considered while deploying the smart contract. The following are some details related to the contract's compiler and deployment in order to verify a contract successfully:

Remix IDE :

- On Remix IDE, navigate to the **Solidity compiler tab**.

- Observe the **compiler version** used to compile and deploy the contract.
- Observe the **Open Source License Type** used in the contract. This means the SPDX license identifier used at the beginning of the Solidity source file. In the `Counter.sol` file we used `// SPDX-License-Identifier: MIT`
- Observe the **EVM version** used for deploying contracts.
- (Optional) If **optimization** is enabled during compilation, take note of the value of the optimization runs parameter

![](/img/build/tutorials/counter-veri-parameters.png)

- On Remix IDE, navigate to **Klaytn tab**.

- (Optional) If the contract constructor method accepts arguments, take note of the [ABI-encoded form](https://docs.soliditylang.org/en/develop/abi-spec.html) of the constructor arguments
- Take note of the contract address of the smart contract on the **Deployed Contracts** tab after successful deployment.

![](/img/build/tutorials/counter-veri-parametersII.png)

## Deploying a multi-part contract

It is important to note that deploying a multi-part contract involves the same steps as deploying a single contract. For the sake of this guide, we will be deploying a simple KIP7 airdrop contract named `airdropToken.sol`. The code is shown below:

```solidity
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@klaytn/contracts/KIP/token/KIP7/KIP7.sol";
import "@klaytn/contracts/access/Ownable.sol";
// the creator of the project mints certian amount of fungible tokens directly to a certain selection of wallets.
contract TokenAirdrop is KIP7, Ownable {
constructor() KIP7("Token Aidrop Demo", "TAD") {
}
// Airdrop Token
function airdropTokens(address[] calldata wAddresses, uint[] calldata tAmount) public onlyOwner {
require(wAddresses.length == tAmount.length, "Must be same lenght");
for (uint256 i = 0; i < wAddresses.length; i++) {
_mintSingleTokens(wAddresses[i], tAmount[i]);
}
}
function _mintSingleTokens(address wAddress, uint amount) private {
_mint(wAddress, amount);
}
function supportsInterface(bytes4 interfaceId)
public
view
virtual
override
returns (bool)
{
return
super.supportsInterface(interfaceId);
}
}
```

## Parameters for multi-part contract verification

The parameters for verifying a multi-part contract are the same as those for a single contract. However, because they are made up of multiple dependent contracts, we need to pre-process all dependencies of the contract into a single solidity file. This preprocessing is usually referred to as smart contract flattening.

For this reason, we will have to flatten the contract so it can be verified using the new flattened Solidity file on the block explorer.

Remix IDE:

- On Remix IDE, navigate to the **File explorer tab**.

- Select the newly created contract under the **contracts** folder
- Click or tap with two fingers to see all commands available on the contract.
- Select **flatten**

![](/img/build/tutorials/airdropToken-flattened.png)

- Once code is flattened, you will see a new contract named `airdropTokens_flattened.sol`.

![](/img/build/tutorials/airdropToken-flattened-file.png)

:::note

There are different tools for flattening a multi-part smart contract into a single Solidity file, such as [Hardhat Flattener](https://hardhat.org/hardhat-runner/docs/advanced/flattening). Kindly refer to the respective smart contract flattening tool's documentation for more detailed instructions on its usage.

:::

## Verifying the Contract

Having obtained all of our verification parameters, we will go over the steps for verifying a single smart contract (Counter.sol) and a multi-part smart contract (airdropTokens.sol) on the block explorer in this section.

### 1. Klaytnscope

To verify a single contract and multi-part contracts on Klaytnscope, follow the steps below:

#### 1.1 Verifying a single contract

1. Goto the search bar of [Klaytnscope](https://baobab.scope.klaytn.com/) and paste the deployed contract address.
2. Navigate to the **contract tab** on that page.
3. Click on the **Match Contract Source Code** link to submit contract code for verification.

![](/img/build/tutorials/counter-contract-tab.png)

4. On the contract verification page, make sure your account is connected to either Kaikas or Metamask. For this guide, we will be using Kaikas.
5. Fill in the contract address in the **contract address field**. Note: This field is usually filled with the contract address automatically.
6. Select the **compiler version** used for the `Counter.sol` example.
7. Select the **Open Source License Type** used for the `Counter.sol` example. For `Counter.sol` example, select the option, **MIT License (MIT)**. If there was none used, select **No License (None)**.
8. In the **Source Code field**, select **Source Text** and paste the source code for `Counter.sol` in the text-field.
9. Select **True** for **Optimization** if it was enabled during compilation, and fill in the number of runs under **Optimization Runs** to be **200**.
10. Select the **EVM version** for the contract. For `Counter.sol` example, select the option **Istanbul**.
11. Click on the CAPTCHA at the bottom and the **Sign and Submit** button to confirm and begin verification.

![](/img/build/tutorials/counter-verification-page.png)

12. After signing the verification request, you will get a verification status notification

![](/img/build/tutorials/counter-success-popup.png)

13. Once verification is done, the result of the verification will be displayed in the browser, and a success result page with the contract address. Click on the contract address to view the **Contract Source Code**, **Contract ABI**, and **Bytecode**.

![](/img/build/tutorials/counter-success-popup-I.png)

![](/img/build/tutorials/counter-full-verification.png)

#### 1.2 Verifying multi-part contract

Verifying a multi-part contract on Klaytnscope is as straightforward as verifying a single contract, except that it requires some additional steps. In this section, we will be verifying the `airdropToken.sol` contract with the following additional steps:

- You can either Select **Source Text** under **Source Code** (step 3 of the Counter.sol example) or **Solidity File(s)** under the **Source Code** field. In the case of **Source Text**, copy the code in the `airdropToken_flattened.sol` and paste in the text field. If **Solidity File(s)**, you can download the `airdropToken_flattened.sol` file on Remix IDE and upload to the field.

a. Source Text

![](/img/build/tutorials/airdrop-veri-field-I.png)

b. Solidity File(s)

![](/img/build/tutorials/airdrop-veri-field-II.png)

After this, every other step remains the same as verifying a single contract. Having filled the verification parameter, click on the **Sign and Submit** button to confirm and begin verification.

Once verification is done, the result of the verification will be displayed in the browser, and a success result page with the contract address. Click on the contract address to view the **Contract Source Code**, **Contract ABI**, and **Bytecode**.

![](/img/build/tutorials/airdrop-success-popup.png)

![](/img/build/tutorials/airdrop-success-popup-I.png)

![](/img/build/tutorials/airdrop-full-verification.png)

### 2. Klaytnfinder

To verify a single contract and multi-part contracts on Klaytnfinder, navigate to the [contract submission request page](https://baobab.klaytnfinder.io/contracts). However, make sure your account is connected to either Kaikas or MetaMask and follow the steps below:

![](/img/build/tutorials/klaytnfinder-con-sub-page.png)

#### 2.1 Verifying single contract

1. Observe the **Is this contract for a token** field? This field is needed when trying to verify a token contract with its official website URL, official email address, and token logo image. For the sake of this guide, select **No** as we are not verifying a commercial token contract.
2. Fill in the **contract address** for the deployed contract (Counter.sol)
3. Make sure to download `Counter.sol` from Remix IDE and upload in the **Source Code (Solidity File)** field
4. Select the **compiler version** used for the `Counter.sol` example
5. Select the **Open Source License Type** used for the `Counter.sol` example. For `Counter.sol` example, select the option, **MIT License (MIT)**. If there was none used, select **No License (None)**
6. Select the **EVM version** for the contract. For `Counter.sol` example, select the option **Istanbul**.
7. Select **True** for **Optimization** if it was enabled during compilation, and fill in the number of runs under **Optimization Runs** to be **200**.
8. (optional) To get the ABI-encoded constructor arguments for this field, navigate to [abi.hashex.org](http://abi.hashex.org) to get the encoded data following the image below:

![](/img/build/tutorials/abi-hashex.png)

9. Click on the **Sign and Submit** button to confirm and begin verification.

![](/img/build/tutorials/counter-k-verification-page.png)

10. Once verification is done, you will get a **Submission Successful** message. Now you can paste the contract address in the explorer search bar to view the **Contract Source Code**, **Contract ABI**, **Creation Code** and **ABI-encoded Value**.

> ![](/img/build/tutorials/counter-k-full-verification.png)
### 2.2 Verifying multiple-part contract

Verifying a multi-part contract on Klaytnfinder follows the same step as verifying a single contract. However, it is important to note we will be uploading the `airdropToken_flattened.sol` file in the **Source Code(Solidity File)** field.

![](/img/build/tutorials/airdrop-k-verification-page.png)

After filling the verification parameters, click on the **Sign and Submit** button to confirm and begin verification. Once verification is done, you will get a **Submission Successful** message. Now you can paste the contract address in the explorer search bar to view the **Contract Source Code**, **Contract ABI**, and **Creation Code**.

![](/img/build/tutorials/airdrop-k-full-verification.png)

## Conclusion

Congratulations on following this guide! In this tutorial, you learnt how to verify contracts (both single and multi-part) using Klaytnscope and Klaytnfinder solely to enhance the transparency (for users), convenience (for developers), and security of deployed contracts. Visit [Klaytn Docs](https://docs.klaytn.foundation/) for more information and [Klaytn Forum](https://forum.klaytn.foundation/) if you have any questions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
sidebar_label: Using Hardhat
---

# How to Verify Smart Contracts Using Hardhat

This guide allows you to automatically verify your smart contracts' source code on Klaytnscope straight from your CLI using the Hardhat Verify Plugin.

To verify your contract on klaytn, you need to add the following configuration to your `hardhat.config.js`:

## Cypress

```
module.exports = {
networks: {
klaytn: {
chainId: 8217,
url: "RPC_URL",
},
},
etherscan: {
apiKey: {
klaytn: "unnecessary",
},
customChains: [
{
network: "klaytn",
chainId: 8217,
urls: {
apiURL: "https://api-cypress.klaytnscope.com/api",
browserURL: "https://klaytnscope.com",
},
},
]
}
}
```

## Baobab

```
module.exports = {
networks: {
klaytn: {
chainId: 1001,
url: "RPC_URL",
},
},
etherscan: {
apiKey: {
klaytn: "unnecessary",
},
customChains: [
{
network: "klaytn",
chainId: 1001,
urls: {
apiURL: "https://api-baobab.klaytnscope.com/api",
browserURL: "https://baobab.klaytnscope.com",
},
},
]
}
}
```

To verify the contract, you will run the verify command and pass in the address of the deployed contract, network and parameters if any.

```bash
npx hardhat verify –network <network> <deployed_address> <parameters>

// example

npx hardhat verify --network klaytn 0x131b54E65c99d34BCA738F29051fDAceEa91C969 1000000000000000
```

In your terminal you should see the source code for your contract was successfully submitted for verification. If the verification was successful, you should see Successfully verified contract and there will be a link to the contract code on [Klaytnscope](https://baobab.klaytnscope.com/account/0x131b54E65c99d34BCA738F29051fDAceEa91C969?tabId=contractCode).

![](/img/build/smart-contracts/verify/terminal-hh-verify.png)

![](/img/build/smart-contracts/verify/scope-hh-verify.png)

## Useful links

- [Configuration for Hardhat Verify Plugin](https://docs.klaytnscope.com/contract/configuration-for-hardhat-verify-plugin)
- [Verifying contracts using Hardhat on Klaytnscope](#)
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ The need for blockchains to access and connect to external data sources, legacy

The following providers have integrated with Klaytn to deliver decentralized oracle services:

- [Orakl Network](https://docs.orakl.network/docs/developers-guide/readme)
- [Orakl Network](https://docs.orakl.network)
- [Witnet](https://docs.witnet.io/)
- [SupraOracles](https://supraoracles.com/docs/overview)
- [KlayOracle](https://klayoracle.gitbook.io/v1.0.0/)
Loading

0 comments on commit 45de4ba

Please sign in to comment.