Solidity

提供: tezos-wiki
移動先: 案内検索

Solidity スマート契約を書くための契約指向のプログラミング言語です。さまざまなブロックチェーンプラットフォーム上でスマートな契約を実装するために使用されます。これは、Gavin Wood、Christian Reitwiessner、Alex Beregszaszi、Liana Husikyan、Hirai Yoichi、Ethereumなどのブロックチェーンプラットフォームでスマートコントラクトを書くことを可能にするいくつかの元[Ethereum]のコア貢献者によって開発されました。

歴史[編集]

固執性は最初2014年8月にGavin Woodによって提案された。この言語は後にChristian Reitwiessnerが率いるEthereumプロジェクトのSolidityチームによって開発されました。 [Ethereum Virtual Machine](EVM)を対象に設計された4つの言語(Serpent、LLL、Viper(実験的)、Mutan(非推奨))のいずれかです。

「コーネル大学」の研究者は、2016年に行われた[The DAO(The DAO)| The DAO]]のハッキングについて、部分的に責任があると述べた。彼は「これは実際にはDAO契約自体:技術的にEVMは意図どおりに動作していましたが、Solidityはコミュニティの逃しただけでなく、言語自体のデザイナーが見逃した契約にセキュリティの欠陥を導入していました。

説明[編集]

Solidityは、EVM上で実行されるスマートコントラクトを開発するために設計された[静的型付きプログラミング言語|静的型付き]プログラミング言語です。 SolidityはEVMで実行可能なバイトコードにコンパイルされます。 Solidityを使用することで、開発者はスマートコントラクトで具体化された自己強制ビジネスロジックを実装するアプリケーションを書くことができ、却下不可能で信頼できる取引記録を残すことができます。ソリディティのようなスマート契約固有の言語でスマートな契約書を書くことは、簡単に(すでにプログラミングスキルを持っている人にとっては表面的に)呼ばれます。

Woodによって指定されているように、既存のWeb開発者に慣れさせるために、ECMAScript構文の周りに設計されています。 ECMAScriptとは異なり、静的な型指定と可変の戻り値の型があります。 SerpentやMutanのような他のEVMターゲット言語と比較して、Solidityにはいくつかの重要な違いがありました。任意の階層的なマッピングや構造体を含むコントラクトの複雑なメンバ変数がサポートされました。コントラクトは継承をサポートします。C3継承を含む[多重継承]。単一の契約内で複数の[型式セーフ]機能を容易にする[アプリケーションバイナリインターフェイス](ABI)も導入されました(そして後でSerpentによってサポートされました)。メソッドコールの分岐のユーザー中心の記述を指定するためのドキュメントシステムも、「自然言語仕様」として知られているこの提案に含まれていました。

ソリディティプログラムの例: < syntaxhighlight lang = "js"> 契約GavCoin {

マッピング(アドレス=> uint)の残高。
uint constant totalCoins = 100000000000;
/// 1m GAV契約の作成者を許可します。
関数GavCoin(){
バランス[msg.sender] = totalCoins;
}
/// $((valueInmGAV / 1000).fixed(0,3))$(message.caller.address())のアカウントからGAVを$だけ(to.address())でアクセス可能なアカウントに送信します。
function send(address to、uint256 valueInmGAV){
if(バランス[msg.sender]> = valueInmGAV){
バランス[to] + = valueInmGAV;
バランス[msg.sender] - = valueInmGAV;
}
}
///天秤のゲッター機能
関数のバランス(アドレスwho)定数が返る(uint256 balanceInmGAV){
balanceInmGAV =バランス[人];
}

} < / syntaxhighlight>

開発プラットフォームの可用性[編集]

}}

外部リンク[編集]

ソース[編集]

http://wikipedia.org/