-
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) までご連絡ください。速やかに削除させていただきます。
- 大きな圧迫: ビットコイン、ZKP、流動性不足がイノベーションを推進
- 2026-02-04 00:40:02
- ビットコイン国債が主力ポッドキャストを公開:タイラー・ロウ氏が新しい機関向け番組の指揮を執る
- 2026-02-04 00:35:01
- EVMアップグレードの誇大広告でZILラリーが勃発、カンクンのマイルストーンに注目
- 2026-02-04 01:10:01
- XRP保有者が新たな富戦略を解き放つ:FXRPレンディングとリキッドステーキングが利回りへの道を切り開く
- 2026-02-04 01:10:01
- DeFi ユーザーは明るい地平線を見据えている: 調査レポートは、進化する暗号通貨の状況の中で広く肯定的な感情を明らかにする
- 2026-02-03 22:05:01
- 仮想通貨のワイルドライド:トークンの失敗、ミームコイン、そして暴露される2025年の混乱
- 2026-02-03 21:55:01
関連知識
暗号通貨契約ポジションを手動または自動でクローズするにはどうすればよいですか?
2026-02-01 23:19:36
手動ポジション決済プロセス1. 契約が有効な取引プラットフォームにログインし、「ポジション」または「オープンオーダー」タブに移動します。 2. シンボル、サイズ、エントリー価格、レバレッジレベルを確認して、特定の契約ポジションを見つけます。 3. ポジションの横にある「クローズ」または「清算」ボタン...
Bitcoin ETF が暗号通貨契約に与える影響を理解するにはどうすればよいですか?
2026-02-01 16:19:51
Bitcoin ETF と市場の流動性1. Bitcoin ETF は機関資本をスポット市場に直接導入し、オーダーブックの厚みを増し、大規模取引のスリッページを減らします。 2. 裁定取引者が先物や永久スワップを使用して ETF ポジションをヘッジするため、流動性の向上はデリバティブ市場にも波及しま...
現在の流動性の急増中に DeFi 契約を取引するにはどうすればよいでしょうか?
2026-02-01 07:00:25
DeFiプロトコルにおける流動性のダイナミクスを理解する1. DeFiにおける流動性の急上昇は、多くの場合、イールド・ファーミング・インセンティブ、トークンの排出、クロスチェーン・ブリッジング活動からの調整された資本流入によって引き起こされます。 2. 自動マーケットメーカーは、大規模な流動性プール...
ソーシャルトレードを利用して暗号通貨契約の専門家をコピーするにはどうすればよいでしょうか?
2026-02-02 07:40:22
ソーシャル取引プラットフォームを理解する1. ソーシャル取引プラットフォームは、リアルタイムの市場データとユーザー対話機能を統合し、トレーダーが他の人が開いたポジションを観察、フォロー、複製できるようにします。 2. これらのプラットフォームでは通常、アカウントの検証、ステーブルコインまたはネイティ...
BNB契約を取引して取引手数料を節約するにはどうすればよいですか?
2026-02-03 00:39:37
BNB契約取引の仕組みを理解する1. BNB 契約はバイナンス先物で取引されるデリバティブ商品であり、ユーザーは原資産を保有することなく BNB/USDT へのレバレッジエクスポージャーを得ることができます。 2. これらの契約は USDT で決済され、永久および四半期ごとの有効期限形式の両方をサポ...
2026 年に向けた一貫した暗号通貨契約取引計画を構築するにはどうすればよいでしょうか?
2026-02-02 22:59:54
契約仕様の定義1. 原資産を選択するには、流動性の深さ、過去のボラティリティ、Binance Futures、Bybit、OKX などの主要なデリバティブ取引所全体の取引所サポートを評価する必要があります。 2. 契約サイズはポジションサイジングのロジックと一致する必要があります。標準化された BT...
暗号通貨契約ポジションを手動または自動でクローズするにはどうすればよいですか?
2026-02-01 23:19:36
手動ポジション決済プロセス1. 契約が有効な取引プラットフォームにログインし、「ポジション」または「オープンオーダー」タブに移動します。 2. シンボル、サイズ、エントリー価格、レバレッジレベルを確認して、特定の契約ポジションを見つけます。 3. ポジションの横にある「クローズ」または「清算」ボタン...
Bitcoin ETF が暗号通貨契約に与える影響を理解するにはどうすればよいですか?
2026-02-01 16:19:51
Bitcoin ETF と市場の流動性1. Bitcoin ETF は機関資本をスポット市場に直接導入し、オーダーブックの厚みを増し、大規模取引のスリッページを減らします。 2. 裁定取引者が先物や永久スワップを使用して ETF ポジションをヘッジするため、流動性の向上はデリバティブ市場にも波及しま...
現在の流動性の急増中に DeFi 契約を取引するにはどうすればよいでしょうか?
2026-02-01 07:00:25
DeFiプロトコルにおける流動性のダイナミクスを理解する1. DeFiにおける流動性の急上昇は、多くの場合、イールド・ファーミング・インセンティブ、トークンの排出、クロスチェーン・ブリッジング活動からの調整された資本流入によって引き起こされます。 2. 自動マーケットメーカーは、大規模な流動性プール...
ソーシャルトレードを利用して暗号通貨契約の専門家をコピーするにはどうすればよいでしょうか?
2026-02-02 07:40:22
ソーシャル取引プラットフォームを理解する1. ソーシャル取引プラットフォームは、リアルタイムの市場データとユーザー対話機能を統合し、トレーダーが他の人が開いたポジションを観察、フォロー、複製できるようにします。 2. これらのプラットフォームでは通常、アカウントの検証、ステーブルコインまたはネイティ...
BNB契約を取引して取引手数料を節約するにはどうすればよいですか?
2026-02-03 00:39:37
BNB契約取引の仕組みを理解する1. BNB 契約はバイナンス先物で取引されるデリバティブ商品であり、ユーザーは原資産を保有することなく BNB/USDT へのレバレッジエクスポージャーを得ることができます。 2. これらの契約は USDT で決済され、永久および四半期ごとの有効期限形式の両方をサポ...
2026 年に向けた一貫した暗号通貨契約取引計画を構築するにはどうすればよいでしょうか?
2026-02-02 22:59:54
契約仕様の定義1. 原資産を選択するには、流動性の深さ、過去のボラティリティ、Binance Futures、Bybit、OKX などの主要なデリバティブ取引所全体の取引所サポートを評価する必要があります。 2. 契約サイズはポジションサイジングのロジックと一致する必要があります。標準化された BT...
すべての記事を見る














