本文へスキップ
このページは英語からの機械翻訳を使用しており、誤りや不明瞭な表現が含まれている可能性があります。最も正確な情報については、オリジナルの英語版をご覧ください。頻繁な更新のため、一部のコンテンツはオリジナルの英語になっている可能性があります。Crowdinでの取り組みに参加して、このページの翻訳改善にご協力ください。 (Crowdin translation page, Contributing guide)

スマートコントラクトのデプロイ

スマート・コントラクトをカイアにデプロイするには、さまざまな方法がある。 この文書では、さまざまなツールを使用してサンプル契約を展開するためのステップバイステップのガイドを提供します。 取引手数料を支払うのに十分なKAIAアカウントをお持ちであることを前提としています。 アカウントを作成するには、Kaia Online Toolkitをご利用ください。"

リミックス・オンラインIDE

インターネットブラウザを開き、Kaia Plugin for Remixにアクセスします。

  1. 新しいファイルを追加する。

  1. 以下のサンプルコード(または配置したいコード)をコピーして、新しいファイルに貼り付けます。 このコードはMortalとKaiaGreeterと呼ばれる2つのコントラクトで構成されており、シンプルな "Hello World!"を実行することができる。

pragma solidity 0.5.12;
contract Mortal {
/* Define variable owner of the type address */
address payable owner;
/* This function is executed at initialization and sets the owner of the contract */
constructor () public { owner = msg.sender; }
/* Function to recover the funds on the contract */
function kill() public payable { if (msg.sender == owner) selfdestruct(owner); }
}
contract KaiaGreeter is Mortal {
/* Define variable greeting of the type string */
string greeting;
/* This runs when the contract is executed */
constructor (string memory _greeting) public {
greeting = _greeting;
}
/* Main function */
function greet() public view returns (string memory) {
return greeting;
}
}

  1. アイコンパネルでコンパイラを選択します。 必要なEVM環境を選択します。 Kaiaネットワークでは、Kairos(テストネット)とMainnetのいずれかを選択できます。 実際のデプロイ前にサンプルコードをコンパイルする準備ができたら、Compileをクリックする。

  1. これで契約を展開できる。 アイコンパネルのKaiaロゴをクリックします。 アカウントの横にあるプラスボタンをクリックしてアカウントをインポートします。 これで契約を展開できる。 アイコンパネルのKaiaロゴをクリックします。 アカウント\の横にあるプラスボタンをクリックしてアカウントをインポートします。

  1. ガスリミットと送信する値を設定します。
  • より複雑な契約を展開する場合は、ガス上限を高く設定する必要があるかもしれません。 この例では、そのままでいい。 この例では、そのままのままにしてください。
  • デプロイ時にコントラクトに KAIA を送信したくない場合は Value を 0 に設定する。
  1. コンストラクタ関数の引数に "Hello World!"を入力し、Deployボタンをクリックする。

  1. コントラクトが正常にデプロイされると、対応するトランザクションのレシートと詳細な結果がターミナルに表示されます。

  2. 機能ボタンをクリックすることで、契約を操作することができます。 各機能は異なる色で表現されている。 Solidityの constant または pure 関数はブルーボトルを持ち(例では greet)、新しいトランザクションを作成しないので、ガス代を消費しません。 赤いボタン(例ではkill)は、ブロックチェーン上の状態を変更し、ガスを消費し、価値を受け入れることができる支払い可能な機能を表している。 オレンジ色のボタンは、契約状態を変更するが、値を受け付けないnon-payable関数用です。

詳しくはこちらのリンクをご参照ください。

VVISP

vvispは、HEACHI LABSが提供する、スマートコントラクトを開発するための使いやすいCLIツール/フレームワークです。 Kaiaスマートコントラクトの環境設定、デプロイ、実行は1つのコマンドで簡単に行える。 詳細は以下のリンクを参照。 Kaiaスマートコントラクトの環境設定、デプロイ、実行は1つのコマンドで簡単に行える。 詳細は以下のリンクを参照。

solc & caver-js

コントラクトをデプロイするもう一つの方法は、solcでコントラクトを手動でコンパイルし、caver-jsでデプロイすることです。

  1. KaiaGreeter.solを作成し、以下のコードを記述する。

pragma solidity 0.5.6;
contract Mortal {
/* Define variable owner of the type address */
address payable owner;
/* This function is executed at initialization and sets the owner of the contract */
constructor () public { owner = msg.sender; }
/* Function to recover the funds on the contract */
function kill() public payable { if (msg.sender == owner) selfdestruct(owner); }
}
contract KaiaGreeter is Mortal {
/* Define variable greeting of the type string */
string greeting;
/* This runs when the contract is executed */
constructor (string memory _greeting) public {
greeting = _greeting;
}
/* Main function */
function greet() public view returns (string memory) {
return greeting;
}
}

  1. solc 0.5.6をインストールする。

$ sudo npm install -g solc@0.5.6

  1. 契約書を作成する。

$ solcjs KaiaGreeter.sol --bin

  1. caver-jsをインストールする。

$ npm install caver-js.

  1. 同じディレクトリに以下のコードで deploy.js を作成する。

const Caver = require("caver-js");
const caver = new Caver("https://public-en-kairos.node.kaia.io")
const walletInstance = caver.kaia.accounts.privateKeyToAccount(
'0x3de0c9...' // enter your private key to deploy contract with
);
caver.kaia.accounts.wallet.add(walletInstance);
const fs = require('fs')
const bytecode = fs.readFileSync('./KaiaGreeter_sol_KaiaGreeter.bin') // compiled output
const constructorType = ['string'] // enter appropriate constructor type
const constructorValue = ['Hello, Kaia!']
const params = caver.kaia.abi.encodeParameters(constructorType, constructorValue);
caver.kaia.sendTransaction({
from: caver.kaia.accounts.wallet[0].address,
gas: "50000000",
data: bytecode.toString() + params.substring(2, params.length)
})
.once("receipt", receipt => {
console.log(receipt)
})
.once("error", error => {
console.log(error);
})

注意:この例は本番での使用は推奨されません。 秘密鍵の取り扱いには十分注意すること。

  1. ノード環境を使ってコントラクトをデプロイする。

$ node deploy.js

ページを改善してください。