自分自身の暗号資産を作成する方法-ERC-20を使用した例

初級編9/29/2024, 8:29:01 AM
ブロックチェーン技術と暗号通貨が急速に進化するにつれて、多くの人々は独自の暗号通貨を発行する方法を学びたいと考えています。このチュートリアルは、イーサリアムテストネットワーク上で独自のERC20トークンを作成および発行するための初心者向けの簡単なガイドを提供することを目的としています。まず、ERC20トークンとは何かを説明し、その基準と重要性について説明し、次に発行プロセスの各ステップを読者に説明します。主なステップには、Web3ウォレットの設定、テストETHの取得、スマートコントラクトの作成、およびそれらのデプロイが含まれます。OpenZeppelinライブラリを活用することで、ERC20規格を満たすトークンを安全かつ効率的に作成する方法を紹介します。このチュートリアルは、読者が暗号通貨の技術的側面を理解するのに役立つだけでなく、実践的な経験を提供し、ブロックチェーンの世界をより深く探求するための基礎を築きます。ブロックチェーン技術に興味のある初心者でも、暗号通貨の発行プロセスを理解したい開発者でも、このチュートリアルでは

ブロックチェーンセクターは、ブロックチェーン、ビットコイン、イーサリアム、暗号資産、およびICOの進展により、注目を集めています。これを受けて、ブロックチェーン技術と暗号資産を使用して効果的なアプリケーションを作成する方法を理解するためのシリーズの一環として、このチュートリアルを執筆することにしました。

このチュートリアルでは、アカウントの設定から、単一のスマートコントラクトを使用してイーサリアムのテストネットワーク上で最初のトークンを発行するまでの手順を詳しく説明します。Metamask. このトークンは、単純な送信を超えたより複雑なアプリケーションの多目的な基盤として機能することができる、Ethereumテストネットワーク上の標準的なERC20トークンとして機能します。

開始する前に

あなた自身のERC20トークンを作成する前に、以下の準備が必要です:

  1. Web3ウォレット(MetaMask、Phantom、またはWalletConnectと互換性のある他のウォレットなど)
  2. Test ETH(テストトークンを入手できますイーサリアムSepolia蛇口)— このステップにはガス手数料が必要です
  3. ウェブブラウザ(Chromeがお勧めです)

ERC-20トークンとは何ですか?

ERCはEthereum Request for Commentの略で、20は提案の識別番号です。ERC-20の目的は、Ethereumネットワークを強化することです。これは最も重要なERC標準の1つであり、スマートコントラクトを通じてEthereumブロックチェーン上でトークンを作成するための技術的な枠組みとなっています。ERC-20は、すべてのEthereumベースのトークンが従う必要がある一連のルールを明確にし、それらをブロックチェーンベースの資産と定義し、送受信可能であり、価値を持ち、Ethereumブロックチェーン上で動作し、取引にガス料金を発生させます。

2015年、ドイツの開発者であるFabian Vogelsteller氏は、プロジェクトのGitHubページにコメントすることで、イーサリアムの歴史に貢献しました。これは彼の20回目のコメントであり、その中で彼は最初にERC-20に言及しました。イーサリアムが急速に拡大するにつれて、ERC-20はネットワークのスケーラビリティの課題に対する解決策として導入されました。

ERC-20の正式な認識と採用は、VogelstellerとEthereum共同創設者のVitalik Buterinによって共同執筆されたEthereum Improvement Proposal(EIP-20)によって、2017年末に行われました。

ERC-20 標準の前に、トークンの作成者はゼロから始める必要があり、異なるトークン間での不一致が生じました。標準化された構造が存在しないため、開発者は他のトークンのスマートコントラクトコードを完全に理解する必要があり、ウォレットや取引所は各トークンのコードをサポートするために確認する必要がありました。アプリケーションに新しいトークンを追加することは複雑な作業となりました。

ERC-20の導入により、その標準化された機能、相互運用性、移転可能性により、ウォレットや取引所は複数のトークンを統合し、それらの間で簡単に交換を行うことができるようになりました。ERC-20トークンで使用されるスマートコントラクトは、複雑な金融取引を自動的に実行し、強制することができるため、DeFiプラットフォームにとって重要です。これらのプラットフォームでは、トークンはローンや流動性プールの株式など、さまざまな金融インストゥルメントを表すことができます。

ERC-20標準は、スマートコントラクトが実装する必須の6つの関数と任意の3つの関数を指定しています。

必要な機能とその説明は次のとおりです:

  • totalSupply: トークンの総供給を定義するメソッド;この制限に達すると、スマートコントラクトは新しいトークンを作成しません。
  • balanceOf: 特定のウォレットアドレスが保持するトークンの数を返すメソッド。
  • transfer: 総供給から指定されたトークンの量を差し引き、ユーザーに割り当てる方法。
  • transferFrom: ユーザー間でトークンを転送するための代替方法。
  • approve: スマートコントラクトが特定のユーザーに一定数のトークンを割り当てることを許可するかどうかをチェックする方法。総供給量を考慮する。
  • allowance: approve メソッドと類似していますが、特定のユーザーが別のユーザーに特定量のトークンを送信するために十分な残高を持っているかどうかを確認します。

前述の基本機能に加えて、トークンの使いやすさを向上させることができる追加のオプション機能があります:

  • 名前:トークンの名前を返すメソッド。
  • symbol: トークンのシンボルを返すメソッドです。
  • 小数点以下桁数:トークンの小数点以下の桁数を示す方法。これにより、トークンの最小単位が定義されます。たとえば、ERC-20トークンの小数点以下桁数が6の場合、トークンは最大6桁まで分割できることを意味します。

オブジェクト指向プログラミングに精通している場合、ERC-20をインタフェースと考えることができます。あなたのトークンをERC-20トークンにするためには、これらの6つの基本的な関数を含める必要があるERC-20インタフェースを実装する必要があります。基本的に、ERC-20インタフェースはテンプレートとして機能し、ERC-20トークンとして分類されることを目的とするすべての契約は、このテンプレートを使用して関数を設計および実装する必要があります。

あなた自身のERC20トークンを作成し始める

テストETHの取得

Ethereum Sepoliaテストネットワーク上で契約を展開するには、インストールする必要がありますMetaMaskブラウザ拡張機能を使用するか、Phantomなどの他のWeb3ウォレット、またはWalletConnectと互換性のある任意のウォレットを使用してください。ウォレットを設定した後、テストETHを取得する必要があります。これは、イーサリアムSepolia蛇口、これはEthereumのSepoliaテストネットワークのために特別に設計されています。テストETHを手に入れるのは簡単です:単にfaucetウェブサイトを訪れ、ウォレットアドレスを接続するか、アドレスを入力し、指示に従います。追加の報酬のためにツイートを共有することもできます。または、オプションの「いいえ、0.05 ETHを直接送ってください」を選択してテストETHを受け取ることもできます。ただし、QuickNodeテストコインのfaucetを使用するには、Ethereumメインネットの口座に少なくとも0.001 ETHがある必要があります。

スマートコントラクトの作成

現在、さまざまなグループが開発したERC20標準に準拠したトークンがEthereumブロックチェーン上で動作しています。これらの実装は異なり、ガスコストの最小化に重点を置いたものもありますが、セキュリティの向上を優先するものもあります。強力で安全なトークンを作成するために、多くの開発者がOpenZeppelinのERC20トークン標準を選択しています。OpenZeppelinは、信頼性の高い安全なERC20トークンフレームワークを含む、信頼性の高いスマートコントラクトの再利用可能なライブラリで、トークンの開発が準拠して安全であることを確認しています。これにより、多くのトークン開発者にとっては選択肢となっています。

簡単さとセキュリティのために、私たちは「Gate.io」という暗号資産取引所を利用します。OpenZeppelin ERC-20このガイドでは、トークンを作成するための契約を作成します。OpenZeppelinを使用すると、完全なERC-20インターフェースを書く必要はありません。単にライブラリ契約をインポートし、その関数を利用します。この例では、MNTという名前の100万個のERC-20トークンを発行します。

次に、こちらへ移動してください。イーサリアム RemixEthereumの統合開発環境であるIDE(Solidityプログラミング言語をサポート)を使用して、新しいSolidityファイル(例:MyNewToken.sol)を作成します。

  1. Ethereum Remix IDE で新しいファイルを作成します

新しいSolidityスクリプトに以下のコードを貼り付けてください:

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20;

import “@openzeppelin/contracts/token/ERC20/ERC20.sol”;

contract MyNewToken は ERC20 です { constructor() ERC20("MyNewToken", "MNT") { _mint(msg.sender, 1000000 (10 *uint256(decimals()))); } }

  1. トークン発行スマートコントラクトの上記コードをコピーして貼り付けてください。

こちらがコードの動作です:

SPDX-License-Identifierコメントは、契約がリリースされるライセンスを示しています。

Pragma directive specifies the version of the compiler that will be used.

ERC20コントラクトはOpenZeppelinからインポートされ、あなたのトークンの基盤として機能します。

MyNewTokenはあなたの契約の名前であり、ERC20契約を継承しています。

constructor functionは、名前(“MyNewToken”)とシンボル(“MNT”)でトークンを初期化します。

コンストラクタ内の_mint関数はトークンの初期供給を作成します。この場合、100万トークンが作成され、契約を展開するアドレスに割り当てられます。トークンの総数は、デシマル値に応じて調整されます。デフォルトでは、OpenZeppelinの実装では18に設定されています。

OpenZeppelinからERC20スマートコントラクトをインポートし、MyNewTokenコントラクトがそれを継承しているため、すべての関数を自分で定義する必要はありません。ERC20コントラクトで定義されたすべての関数がMyNewTokenコントラクトに含まれています。完全なERC-20コードのより詳細なバージョンを参照したい場合は、次を参照してください。このファイル.

今、少し時間をかけてスマートコントラクトをカスタマイズして、必要に合わせて調整してください。また、このセクションを変更することで、トークン名とシンボルも変更することができます:ERC20(“MyNewToken”, “MNT”) 。

スマートコントラクトを展開する

スマートコントラクトをカスタマイズした後、次のステップはコンパイルすることです。

ステップ1:Solidity Compilerボタンをクリックします。コンパイラのバージョンを確認し、正しいコントラクトが選択されていることを確認します。スマートコントラクトには line pragma solidity ^0.8.20;コンパイラのバージョンは 0.8.20 以上である必要があります。次に、[Compile MyNewToken.sol] ボタンをクリックします。すべてが成功すると、コンパイルボタンに緑色のチェックマークが表示されます。

  1. スマートコントラクトをコンパイルする

  1. コンパイル成功(緑のチェックマーク)

ステップ2:Deploy&Run Transactionsタブにナビゲートします。環境セクションの下で、展開のためにInjected Providerオプションを選択します。続行する前に、MetaMaskがSepoliaテストネットワークに設定され、展開のためにMyNewToken契約が選択されていることを確認してください。最後に、デプロイボタンをクリックして契約を展開します。

  1. ローカルWeb3(MetaMask)ウォレットとしてInjected Providerを選択してください

  1. Web3ウォレットを接続する

  1. 契約のデプロイメントを確認し、ネットワークを選択します(これはテストネットワークです)

ネットワークを切り替え方がわからない場合は、MetaMask拡張機能を開き、左上隅のネットワークセレクターをクリックし、Sepoliaを選択します。表示されない場合は、「テストネットワークを表示」オプションが有効になっていることを確認してください。QuickNode RPC URLをMetaMaskに追加する手順については、[URL]をご覧ください。QuickNodeガイド.

注意: テストETHを交換するためにGAS手数料を負担する必要があります。

ステップ3:MetaMaskでトランザクションを確認します:

おめでとうございます! あなたのトークン契約は、Ethereum Sepoliaテストネットワークに正常に展開され、正式に最初のトークンを所有しています!

Tác giả: Deniz
Thông dịch viên: Paine
(Những) người đánh giá: KOWEI、Edward、Elisa
Đánh giá bản dịch: Ashely
* Đầu tư có rủi ro, phải thận trọng khi tham gia thị trường. Thông tin không nhằm mục đích và không cấu thành lời khuyên tài chính hay bất kỳ đề xuất nào khác thuộc bất kỳ hình thức nào được cung cấp hoặc xác nhận bởi Gate.io.
* Không được phép sao chép, truyền tải hoặc đạo nhái bài viết này mà không có sự cho phép của Gate.io. Vi phạm là hành vi vi phạm Luật Bản quyền và có thể phải chịu sự xử lý theo pháp luật.

自分自身の暗号資産を作成する方法-ERC-20を使用した例

初級編9/29/2024, 8:29:01 AM
ブロックチェーン技術と暗号通貨が急速に進化するにつれて、多くの人々は独自の暗号通貨を発行する方法を学びたいと考えています。このチュートリアルは、イーサリアムテストネットワーク上で独自のERC20トークンを作成および発行するための初心者向けの簡単なガイドを提供することを目的としています。まず、ERC20トークンとは何かを説明し、その基準と重要性について説明し、次に発行プロセスの各ステップを読者に説明します。主なステップには、Web3ウォレットの設定、テストETHの取得、スマートコントラクトの作成、およびそれらのデプロイが含まれます。OpenZeppelinライブラリを活用することで、ERC20規格を満たすトークンを安全かつ効率的に作成する方法を紹介します。このチュートリアルは、読者が暗号通貨の技術的側面を理解するのに役立つだけでなく、実践的な経験を提供し、ブロックチェーンの世界をより深く探求するための基礎を築きます。ブロックチェーン技術に興味のある初心者でも、暗号通貨の発行プロセスを理解したい開発者でも、このチュートリアルでは

ブロックチェーンセクターは、ブロックチェーン、ビットコイン、イーサリアム、暗号資産、およびICOの進展により、注目を集めています。これを受けて、ブロックチェーン技術と暗号資産を使用して効果的なアプリケーションを作成する方法を理解するためのシリーズの一環として、このチュートリアルを執筆することにしました。

このチュートリアルでは、アカウントの設定から、単一のスマートコントラクトを使用してイーサリアムのテストネットワーク上で最初のトークンを発行するまでの手順を詳しく説明します。Metamask. このトークンは、単純な送信を超えたより複雑なアプリケーションの多目的な基盤として機能することができる、Ethereumテストネットワーク上の標準的なERC20トークンとして機能します。

開始する前に

あなた自身のERC20トークンを作成する前に、以下の準備が必要です:

  1. Web3ウォレット(MetaMask、Phantom、またはWalletConnectと互換性のある他のウォレットなど)
  2. Test ETH(テストトークンを入手できますイーサリアムSepolia蛇口)— このステップにはガス手数料が必要です
  3. ウェブブラウザ(Chromeがお勧めです)

ERC-20トークンとは何ですか?

ERCはEthereum Request for Commentの略で、20は提案の識別番号です。ERC-20の目的は、Ethereumネットワークを強化することです。これは最も重要なERC標準の1つであり、スマートコントラクトを通じてEthereumブロックチェーン上でトークンを作成するための技術的な枠組みとなっています。ERC-20は、すべてのEthereumベースのトークンが従う必要がある一連のルールを明確にし、それらをブロックチェーンベースの資産と定義し、送受信可能であり、価値を持ち、Ethereumブロックチェーン上で動作し、取引にガス料金を発生させます。

2015年、ドイツの開発者であるFabian Vogelsteller氏は、プロジェクトのGitHubページにコメントすることで、イーサリアムの歴史に貢献しました。これは彼の20回目のコメントであり、その中で彼は最初にERC-20に言及しました。イーサリアムが急速に拡大するにつれて、ERC-20はネットワークのスケーラビリティの課題に対する解決策として導入されました。

ERC-20の正式な認識と採用は、VogelstellerとEthereum共同創設者のVitalik Buterinによって共同執筆されたEthereum Improvement Proposal(EIP-20)によって、2017年末に行われました。

ERC-20 標準の前に、トークンの作成者はゼロから始める必要があり、異なるトークン間での不一致が生じました。標準化された構造が存在しないため、開発者は他のトークンのスマートコントラクトコードを完全に理解する必要があり、ウォレットや取引所は各トークンのコードをサポートするために確認する必要がありました。アプリケーションに新しいトークンを追加することは複雑な作業となりました。

ERC-20の導入により、その標準化された機能、相互運用性、移転可能性により、ウォレットや取引所は複数のトークンを統合し、それらの間で簡単に交換を行うことができるようになりました。ERC-20トークンで使用されるスマートコントラクトは、複雑な金融取引を自動的に実行し、強制することができるため、DeFiプラットフォームにとって重要です。これらのプラットフォームでは、トークンはローンや流動性プールの株式など、さまざまな金融インストゥルメントを表すことができます。

ERC-20標準は、スマートコントラクトが実装する必須の6つの関数と任意の3つの関数を指定しています。

必要な機能とその説明は次のとおりです:

  • totalSupply: トークンの総供給を定義するメソッド;この制限に達すると、スマートコントラクトは新しいトークンを作成しません。
  • balanceOf: 特定のウォレットアドレスが保持するトークンの数を返すメソッド。
  • transfer: 総供給から指定されたトークンの量を差し引き、ユーザーに割り当てる方法。
  • transferFrom: ユーザー間でトークンを転送するための代替方法。
  • approve: スマートコントラクトが特定のユーザーに一定数のトークンを割り当てることを許可するかどうかをチェックする方法。総供給量を考慮する。
  • allowance: approve メソッドと類似していますが、特定のユーザーが別のユーザーに特定量のトークンを送信するために十分な残高を持っているかどうかを確認します。

前述の基本機能に加えて、トークンの使いやすさを向上させることができる追加のオプション機能があります:

  • 名前:トークンの名前を返すメソッド。
  • symbol: トークンのシンボルを返すメソッドです。
  • 小数点以下桁数:トークンの小数点以下の桁数を示す方法。これにより、トークンの最小単位が定義されます。たとえば、ERC-20トークンの小数点以下桁数が6の場合、トークンは最大6桁まで分割できることを意味します。

オブジェクト指向プログラミングに精通している場合、ERC-20をインタフェースと考えることができます。あなたのトークンをERC-20トークンにするためには、これらの6つの基本的な関数を含める必要があるERC-20インタフェースを実装する必要があります。基本的に、ERC-20インタフェースはテンプレートとして機能し、ERC-20トークンとして分類されることを目的とするすべての契約は、このテンプレートを使用して関数を設計および実装する必要があります。

あなた自身のERC20トークンを作成し始める

テストETHの取得

Ethereum Sepoliaテストネットワーク上で契約を展開するには、インストールする必要がありますMetaMaskブラウザ拡張機能を使用するか、Phantomなどの他のWeb3ウォレット、またはWalletConnectと互換性のある任意のウォレットを使用してください。ウォレットを設定した後、テストETHを取得する必要があります。これは、イーサリアムSepolia蛇口、これはEthereumのSepoliaテストネットワークのために特別に設計されています。テストETHを手に入れるのは簡単です:単にfaucetウェブサイトを訪れ、ウォレットアドレスを接続するか、アドレスを入力し、指示に従います。追加の報酬のためにツイートを共有することもできます。または、オプションの「いいえ、0.05 ETHを直接送ってください」を選択してテストETHを受け取ることもできます。ただし、QuickNodeテストコインのfaucetを使用するには、Ethereumメインネットの口座に少なくとも0.001 ETHがある必要があります。

スマートコントラクトの作成

現在、さまざまなグループが開発したERC20標準に準拠したトークンがEthereumブロックチェーン上で動作しています。これらの実装は異なり、ガスコストの最小化に重点を置いたものもありますが、セキュリティの向上を優先するものもあります。強力で安全なトークンを作成するために、多くの開発者がOpenZeppelinのERC20トークン標準を選択しています。OpenZeppelinは、信頼性の高い安全なERC20トークンフレームワークを含む、信頼性の高いスマートコントラクトの再利用可能なライブラリで、トークンの開発が準拠して安全であることを確認しています。これにより、多くのトークン開発者にとっては選択肢となっています。

簡単さとセキュリティのために、私たちは「Gate.io」という暗号資産取引所を利用します。OpenZeppelin ERC-20このガイドでは、トークンを作成するための契約を作成します。OpenZeppelinを使用すると、完全なERC-20インターフェースを書く必要はありません。単にライブラリ契約をインポートし、その関数を利用します。この例では、MNTという名前の100万個のERC-20トークンを発行します。

次に、こちらへ移動してください。イーサリアム RemixEthereumの統合開発環境であるIDE(Solidityプログラミング言語をサポート)を使用して、新しいSolidityファイル(例:MyNewToken.sol)を作成します。

  1. Ethereum Remix IDE で新しいファイルを作成します

新しいSolidityスクリプトに以下のコードを貼り付けてください:

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20;

import “@openzeppelin/contracts/token/ERC20/ERC20.sol”;

contract MyNewToken は ERC20 です { constructor() ERC20("MyNewToken", "MNT") { _mint(msg.sender, 1000000 (10 *uint256(decimals()))); } }

  1. トークン発行スマートコントラクトの上記コードをコピーして貼り付けてください。

こちらがコードの動作です:

SPDX-License-Identifierコメントは、契約がリリースされるライセンスを示しています。

Pragma directive specifies the version of the compiler that will be used.

ERC20コントラクトはOpenZeppelinからインポートされ、あなたのトークンの基盤として機能します。

MyNewTokenはあなたの契約の名前であり、ERC20契約を継承しています。

constructor functionは、名前(“MyNewToken”)とシンボル(“MNT”)でトークンを初期化します。

コンストラクタ内の_mint関数はトークンの初期供給を作成します。この場合、100万トークンが作成され、契約を展開するアドレスに割り当てられます。トークンの総数は、デシマル値に応じて調整されます。デフォルトでは、OpenZeppelinの実装では18に設定されています。

OpenZeppelinからERC20スマートコントラクトをインポートし、MyNewTokenコントラクトがそれを継承しているため、すべての関数を自分で定義する必要はありません。ERC20コントラクトで定義されたすべての関数がMyNewTokenコントラクトに含まれています。完全なERC-20コードのより詳細なバージョンを参照したい場合は、次を参照してください。このファイル.

今、少し時間をかけてスマートコントラクトをカスタマイズして、必要に合わせて調整してください。また、このセクションを変更することで、トークン名とシンボルも変更することができます:ERC20(“MyNewToken”, “MNT”) 。

スマートコントラクトを展開する

スマートコントラクトをカスタマイズした後、次のステップはコンパイルすることです。

ステップ1:Solidity Compilerボタンをクリックします。コンパイラのバージョンを確認し、正しいコントラクトが選択されていることを確認します。スマートコントラクトには line pragma solidity ^0.8.20;コンパイラのバージョンは 0.8.20 以上である必要があります。次に、[Compile MyNewToken.sol] ボタンをクリックします。すべてが成功すると、コンパイルボタンに緑色のチェックマークが表示されます。

  1. スマートコントラクトをコンパイルする

  1. コンパイル成功(緑のチェックマーク)

ステップ2:Deploy&Run Transactionsタブにナビゲートします。環境セクションの下で、展開のためにInjected Providerオプションを選択します。続行する前に、MetaMaskがSepoliaテストネットワークに設定され、展開のためにMyNewToken契約が選択されていることを確認してください。最後に、デプロイボタンをクリックして契約を展開します。

  1. ローカルWeb3(MetaMask)ウォレットとしてInjected Providerを選択してください

  1. Web3ウォレットを接続する

  1. 契約のデプロイメントを確認し、ネットワークを選択します(これはテストネットワークです)

ネットワークを切り替え方がわからない場合は、MetaMask拡張機能を開き、左上隅のネットワークセレクターをクリックし、Sepoliaを選択します。表示されない場合は、「テストネットワークを表示」オプションが有効になっていることを確認してください。QuickNode RPC URLをMetaMaskに追加する手順については、[URL]をご覧ください。QuickNodeガイド.

注意: テストETHを交換するためにGAS手数料を負担する必要があります。

ステップ3:MetaMaskでトランザクションを確認します:

おめでとうございます! あなたのトークン契約は、Ethereum Sepoliaテストネットワークに正常に展開され、正式に最初のトークンを所有しています!

Tác giả: Deniz
Thông dịch viên: Paine
(Những) người đánh giá: KOWEI、Edward、Elisa
Đánh giá bản dịch: Ashely
* Đầu tư có rủi ro, phải thận trọng khi tham gia thị trường. Thông tin không nhằm mục đích và không cấu thành lời khuyên tài chính hay bất kỳ đề xuất nào khác thuộc bất kỳ hình thức nào được cung cấp hoặc xác nhận bởi Gate.io.
* Không được phép sao chép, truyền tải hoặc đạo nhái bài viết này mà không có sự cho phép của Gate.io. Vi phạm là hành vi vi phạm Luật Bản quyền và có thể phải chịu sự xử lý theo pháp luật.
Bắt đầu giao dịch
Đăng ký và giao dịch để nhận phần thưởng USDTEST trị giá
$100
$5500