-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
スマートコントラクトをどのように開発しますか?
A smart contract is a self-executing program on a blockchain that enforces agreement terms when conditions are met, ensuring trust and transparency.
2025/08/11 10:50
スマートコントラクトの基本を理解する
スマートコントラクトは、事前定義された条件が満たされたときに契約の条件を自動的に実施するブロックチェーンに展開される自己実行プログラムです。これらの契約は、展開されると不変であり、変更することはできません。これにより、信頼と透明性が保証されます。スマートコントラクトを開発するために最も広く使用されているプラットフォームは、 Solidityプログラミング言語をサポートするEthereumです。コードを作成する前に、地方分権化、ガス料金、取引の最終性などのコアブロックチェーンの概念を理解することが不可欠です。スマートコントラクトとのそれぞれの相互作用は、ブロックチェーンのネイティブトークン(例えば、イーサリアムのETH)で支払われるガスを消費します。開発者は、ユーザーのコストを最小限に抑えるために効率的に契約を設計する必要があります。
開発環境のセットアップ
スマートコントラクトの開発を開始するには、適切な開発環境を構成する必要があります。ほとんどのブロックチェーン開発ツールの前提条件であるnode.jsとnpmをインストールすることから始めます。次に、2つの人気のあるイーサリアム開発フレームワークであるHardhatまたはTruffleをインストールします。このガイドでは、 Hardhatを使用します。
- コマンドを使用してHardhatをインストールします:
npm install --hardhat - 新しいプロジェクトの初期化:
npx hardhat - プロンプトが表示されたら、「JavaScriptプロジェクトの作成」を選択します
- 必要なプラグインをインストール:
npm install --save-dev @nomicfoundation/hardhat-toolbox
また、構文の強調表示とエラー検出のSolidity拡張機能を備えたVisual Studioコードなどのコードエディターも必要です。さらに、ブラウザウォレットであるメタマスクをインストールして、テストネットワークと対話します。 AlchemyやInfuraなどのサービスのエンドポイントを使用してカスタムRPCネットワークを追加することにより、 GoerliやSepoliaなどのテストネットワークに接続するようにMetamaskを構成します。
最初のスマートコントラクトを堅実さで書く
contractsディレクトリ内にSimpleStorage.solという名前の新しいファイルを作成します。 Solidityバージョンを宣言することから始めます。
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contractキーワードを使用して契約を定義します。
contract SimpleStorage {uint256 private data; function setData(uint256 _data) public { data = _data; } function getData() public view returns (uint256) { return data; }
}
この契約には、タイプuint256の状態変数data 、その値を設定する機能、およびそれを取得する別の型が含まれます。 privateキーワードは、契約外から直接dataにアクセスできないことを保証します。 public機能は外部的に呼び出すことができます。 getDataのview修飾子は、ブロックチェーン状態を変更しないことを示しており、外部から呼び出された場合にのみ読み取りのみでガスを使用できます。
スマートコントラクトのコンパイルとテスト
展開する前に、hardhatを使用して契約をコンパイルします。
- ターミナルで
npx hardhat compileを実行します - 成功した場合、アーティファクトは
artifactsフォルダーに表示されます
次に、 test DirectoryにテストスクリプトSimpleStorage.test.js作成します。
const { expect } = require('chai'); const { ethers } = require('hardhat');説明( 'simplestorage'、function(){ それ( '正しい初期値を返す必要があります'、async function(){const SimpleStorage = await ethers.getContractFactory('SimpleStorage'); const simpleStorage = await SimpleStorage.deploy(); await simpleStorage.deployed(); expect(await simpleStorage.getData()).to.equal(0);});
それ( '保存された値を更新する必要があります'、async function(){
const simpleStorage = await ethers.getContractAt('SimpleStorage', /* deployed address */); await simpleStorage.setData(42); expect(await simpleStorage.getData()).to.equal(42);}); });
テストの実行: npx hardhat test 。テスト出力が成功すると、契約ロジックが健全であることが確認されます。展開前にバグをキャッチするには、特に展開された契約が不可能であるため、テストは重要です。
契約をテストネットワークに展開します
deploy.jsという名前のscriptsフォルダーに展開スクリプトを作成します:
const { ethers } = require('hardhat');async function main(){ const simplestorage = await ethers.getContractFactory( 'Simplestorage'); const simplestorage = await simplestorage.deploy(); simplestorage.deployed();console.log( '契約展開:'、simplestorage.address); }
main()。catch((error)=> { Console.Error(エラー); process.exitcode = 1; });
hardhat.config.jsを構成して、テストネットワークとウォレット資格情報を含めるようにします。
require('@nomicfoundation/hardhat-toolbox'); const INFURA_API_KEY = 'your-infura-key'; const PRIVATE_KEY = 'your-wallet-private-key';module.exports = { 堅牢性: '0.8.0'、 ネットワーク:{goerli: { url: `https://goerli.infura.io/v3/${INFURA_API_KEY}`, accounts: [PRIVATE_KEY] }} };
プレースホルダーを実際の値に置き換えます。次に、deploy: npx hardhat run scripts/deploy.js --network goerli 。成功すると、契約アドレスが表示されます。 Etherscanのようなブロックチェーンエクスプローラーでアドレスをチェックして、展開を確認します。
展開された契約との対話
展開後、 ethers.jsを使用して契約を操作するか、メタマスクを介して直接対話します。 node.jsスクリプトで:
const { ethers } = require('hardhat'); const contractAddress = '0x...'; const contractABI = [ / ABI from artifacts / ];async関数interace(){ const Provider = new Ethers.Providers.Web3Provider(window.ethereum); await provider.send( 'eth_requestaccounts'、[]); const signer = provider.getSigner(); const contract = new Ethers.Contract(ContractAddress、ContractAbi、Signer);契約を待っています。SetData(100); const value = await Contract.getData(); console.log( 'current value:'、value.toString()); }
または、 EtherScanを使用して、ウォレットを接続し、[書き込み契約]タブを使用して契約に書き込みます。これが機能するために、ABIがEtherscanで検証されていることを確認してください。
よくある質問
堅牢性におけるSPDXライセンス識別子の目的は何ですか? SPDX-License-Identifierは、スマートコントラクトがリリースされるオープンソースライセンスを指定します。法的明確性と透明性のためにそれを含めることはベストプラクティスです。一般的なライセンスには、MIT、GPL、およびApache-2.0が含まれます。
堅牢性のエラーを処理するにはどうすればよいですか?使用する必要があり、戻り、断定されます。 require(condition, 'Error message') 。 revert()手動で使用して実行することができます。 assert内部エラー用であり、残りのすべてのガスを消費します。
展開後にスマートコントラクトをアップグレードできますか?直接的な変更は不変のため不可能です。ただし、 UUPや透過プロキシなどのプロキシパターンにより、データストレージを実行可能可能性ロジックから分離することにより、ロジックアップグレードが可能になります。これには、開発中の慎重な建築計画が必要です。
ガスの推定とは何ですか、そしてなぜそれが重要なのですか?ガスの推定では、トランザクションが消費するガスの量を予測します。ガス外のエラーを防ぎ、ユーザーがトランザクションコストを理解するのに役立ちます。 HardHatのようなツールは自動的にガスを推定しますが、複雑な機能にはestimateGas()を使用して手動チェックが必要になる場合があります。
免責事項:info@kdj.com
提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。
このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。
- チェーンエコシステムの発火: ダイナミックな成長を明らかにする最新アップデートとXCNニュース
- 2026-02-10 13:05:01
- MicroStrategyのマイケル・セイラー氏、市場混乱のさなかビットコインへの賭けを倍増
- 2026-02-10 12:40:03
- デジタル貨幣学が注目を集める: アプリと AI がコイン収集ソフトウェアに革命を起こす
- 2026-02-10 13:05:01
- XRPとリップルが規制の流れを乗り切る:今後の展望
- 2026-02-10 13:00:02
- ルナクラシック (LUNC) 価格予測: 変化する市場ダイナミクスの中で 1 ドルの夢を乗り切る
- 2026-02-10 13:00:02
- 大きな変化: ビットコイン ETF スワップとクレジット ツールが金融機関に新時代をもたらす
- 2026-02-10 12:55:01
関連知識
デイトレード暗号通貨のレバレッジを安全に最大化するにはどうすればよいですか?
2026-02-08 01:19:53
暗号デリバティブにおけるレバレッジの仕組みを理解する1. レバレッジにより、トレーダーは必要な資金の一部でより大きなポジションをコントロールできるようになり、潜在的な利益と損失の両方が倍増します。 2. ほとんどの暗号通貨取引所は、資産ペアとアカウント検証レベルに応じて、2 倍から 125 倍までの...
スキャルピング用の「ワンクリック」取引インターフェイスを設定するにはどうすればよいですか?
2026-02-09 22:59:56
コアアーキテクチャ要件1. 50 ミリ秒未満の間隔でリアルタイムの買値更新を受信するには、取引所の注文帳フィードとの低遅延 WebSocket 接続を直接確立する必要があります。 2. インターフェイスは、ルーティング遅延を引き起こす外部バックエンド プロキシへの依存を避けるために、WebAssem...
メジャーアップグレードの前後でイーサリアム先物を取引するにはどうすればよいですか?
2026-02-08 09:40:26
イーサリアム先物の仕組みを理解する1. イーサリアム先物契約は、CME やバイナンス先物などの規制された取引所で、あらかじめ決められた価格と日付で ETH を売買するための標準化された契約です。 2. レバレッジは重要な役割を果たします。トレーダーは最小限の資金で大きなポジションを管理でき、変動期間...
大規模契約取引用の流動性の高いペアを見つけるにはどうすればよいですか?
2026-02-08 18:20:09
大規模契約取引向けの流動性の高いペアを見つける大規模な契約注文を実行するトレーダーは、スリッページや価格への影響を避けるために流動性を優先する必要があります。流動性の低い環境では、特に資金調達率とベーシスの乖離によりボラティリティが増大する無期限先物やインバース契約において、実行リスクが増幅されます...
清算を防ぐために「マーク価格」と「最終価格」を使用する方法は?
2026-02-07 17:39:59
マーク価格の仕組みを理解する1. マーク価格は、複数のスポット為替指数と資金調達率の調整から導出される複合価値であり、永久契約の公正な市場価値を反映するように設計されています。 2. Binance、Coinbase、Kraken、Bybit などの主要なスポット市場からのリアルタイム データを組み...
レバレッジ取引における「自己資本利益率(ROE)」の計算方法は?
2026-02-08 04:39:45
レバレッジ取引における自己資本利益率を理解する1. レバレッジ取引における自己資本利益率 (ROE) は、ポジションの合計サイズではなく、トレーダーの自己資金と比較して生み出される収益性を測定します。これは、トレーダーが取引所やブローカーから資金を借りる際に、自分の株式をどれだけ効率的に利用するかを...
デイトレード暗号通貨のレバレッジを安全に最大化するにはどうすればよいですか?
2026-02-08 01:19:53
暗号デリバティブにおけるレバレッジの仕組みを理解する1. レバレッジにより、トレーダーは必要な資金の一部でより大きなポジションをコントロールできるようになり、潜在的な利益と損失の両方が倍増します。 2. ほとんどの暗号通貨取引所は、資産ペアとアカウント検証レベルに応じて、2 倍から 125 倍までの...
スキャルピング用の「ワンクリック」取引インターフェイスを設定するにはどうすればよいですか?
2026-02-09 22:59:56
コアアーキテクチャ要件1. 50 ミリ秒未満の間隔でリアルタイムの買値更新を受信するには、取引所の注文帳フィードとの低遅延 WebSocket 接続を直接確立する必要があります。 2. インターフェイスは、ルーティング遅延を引き起こす外部バックエンド プロキシへの依存を避けるために、WebAssem...
メジャーアップグレードの前後でイーサリアム先物を取引するにはどうすればよいですか?
2026-02-08 09:40:26
イーサリアム先物の仕組みを理解する1. イーサリアム先物契約は、CME やバイナンス先物などの規制された取引所で、あらかじめ決められた価格と日付で ETH を売買するための標準化された契約です。 2. レバレッジは重要な役割を果たします。トレーダーは最小限の資金で大きなポジションを管理でき、変動期間...
大規模契約取引用の流動性の高いペアを見つけるにはどうすればよいですか?
2026-02-08 18:20:09
大規模契約取引向けの流動性の高いペアを見つける大規模な契約注文を実行するトレーダーは、スリッページや価格への影響を避けるために流動性を優先する必要があります。流動性の低い環境では、特に資金調達率とベーシスの乖離によりボラティリティが増大する無期限先物やインバース契約において、実行リスクが増幅されます...
清算を防ぐために「マーク価格」と「最終価格」を使用する方法は?
2026-02-07 17:39:59
マーク価格の仕組みを理解する1. マーク価格は、複数のスポット為替指数と資金調達率の調整から導出される複合価値であり、永久契約の公正な市場価値を反映するように設計されています。 2. Binance、Coinbase、Kraken、Bybit などの主要なスポット市場からのリアルタイム データを組み...
レバレッジ取引における「自己資本利益率(ROE)」の計算方法は?
2026-02-08 04:39:45
レバレッジ取引における自己資本利益率を理解する1. レバレッジ取引における自己資本利益率 (ROE) は、ポジションの合計サイズではなく、トレーダーの自己資金と比較して生み出される収益性を測定します。これは、トレーダーが取引所やブローカーから資金を借りる際に、自分の株式をどれだけ効率的に利用するかを...
すべての記事を見る














