ソフトウェアエンジニアがChainlinkを導入するメリットとサンプルコード


ソフトウェアエンジニアがChainlinkを導入するメリットとサンプルコード

smartcontractkit/chainlink

2025-09-26

さて、今回は「smartcontractkit/chainlink」について、ソフトウェアエンジニアの視点から、どういうときに役に立つのか、どうやって使うのか、といったことを、キャンプのコントを演じているつもりで、分かりやすく解説していきますね。

ベテランキャンパー(私)
Chainlinkを使いこなす、頼れるエンジニア。

初心者キャンパー(あなた)
ブロックチェーンは知ってるけど、Chainlinkはよく知らないエンジニア。

ベテランキャンパー(私)
よう!今日のキャンプ、いい感じだな!

初心者キャンパー(あなた)
はい!でも、ちょっと聞きたいことがあって...。スマートコントラクトって、ブロックチェーンの外にある情報を使えないんですよね?例えば、今日の天気とか、株価とか...。

ベテランキャンパー(私)
お、いいところに気づいたな!そうなんだ。ブロックチェーンは閉鎖的な世界だから、外の情報は直接持ってこれない。まるで、このキャンプ場の中にいる俺たちが、外のスーパーの今日の特売情報を直接知ることができないのと同じだ。

初心者キャンパー(あなた)
えー、じゃあ、スマートコントラクトで「今日の天気予報が晴れだったら、キャンプ参加者にボーナスを配る」みたいなことはできないんですか?

ベテランキャンパー(私)
普通はできない。でも、それを可能にする「橋」があるんだ。それが、この「Chainlink」ってやつさ!

「smartcontractkit/chainlink」は、分散型オラクルネットワークのノードを動かすためのソフトウェアなんだ。

オラクルっていうのは、スマートコントラクトに外部の情報(オフチェーンデータ)を安全に提供する役割を持つ、いわば「情報伝達役」だ。

Chainlinkは、このオラクルを単一の信頼点(Single Point of Failure)にしないように、複数のオラクルが協力して情報を検証・提供する仕組みになっている。だから、誰かが不正な情報を送ろうとしても、他のノードがそれを検知して、正しい情報をブロックチェーンに届けられる。

例えるなら、このキャンプ場(ブロックチェーン)の「村長さん」(スマートコントラクト)に、外の天気予報(外部データ)を伝えるために、何人もの「メッセンジャー」(オラクルノード)を派遣するようなものだ。一人が嘘を言っても、他のメッセンジャーが「いや、本当は晴れだよ!」と教えてくれるから、村長さんは正しい情報を受け取れる、ってわけ。

この「橋」があることで、これまでブロックチェーン単体では実現できなかった、たくさんの面白いアプリケーションが作れるようになるんだ。

金融アプリケーション

デリバティブや先物取引
株価や仮想通貨の価格データをChainlink経由で取得して、契約を自動で実行できる。

分散型保険
飛行機の遅延情報や、作物の収穫量データを取得して、保険金を自動で支払うスマートコントラクトを作れる。

ゲーム

NFTゲーム
ゲーム内アイテムの価格を外部の市場価格と連動させたり、乱数を生成して希少なアイテムを公平にドロップさせたりできる。

サプライチェーン管理

商品の出荷状況や、温度・湿度データなどを取得して、契約条件が満たされたら自動で決済を行うスマートコントラクトを組める。

初心者キャンパー(あなた)
なるほど!じゃあ、さっきの「天気予報が晴れだったらボーナス」も、Chainlinkを使えば作れるんですね!すごい!

ベテランキャンパー(私)
そうだ!そして、この「smartcontractkit/chainlink」は、そのためのノードを立てるためのソフトウェアなんだ。Golangで書かれているから、Golangに慣れているエンジニアなら、わりと簡単に触れると思うぞ。

実際にChainlinkノードを立てて、データを提供してみるぞ。準備はいいか?

Golangの実行環境

Docker(コンテナ環境)

イーサリアムテストネットのノード(Goerliなど)に接続できる環境

ウォレット(MetaMaskなど)

Chainlinkのノードは、Dockerコンテナで動かすのが一般的で簡単だ。

まず、設定ファイル config.toml を用意する。

# config.toml
# イーサリアムテストネットのURLを設定
ETH_URL = "wss://goerli.infura.io/ws/v3/<あなたのInfura APIキー>"
# ウォレットの秘密鍵を設定
EVM_CHAIN_ID = 5 # GoerliテストネットのChain ID
EVM_CHAIN_ID_5_ETH_KEY_STORE_PASSWORD = "your_password"
# Chainlinkのウォレットパスワードファイル
KEY_STORE_PASSWORD = "your_password"

次に、Docker Composeファイル docker-compose.yml を作成する。

# docker-compose.yml
version: "3.7"
services:
  chainlink:
    image: smartcontractkit/chainlink:latest
    container_name: chainlink_node
    env_file:
      - .env
    volumes:
      - ./chainlink:/chainlink
    ports:
      - "6688:6688"
    command: chainlink node start -p /chainlink/.password -a /chainlink/.api

そして、以下のコマンドで起動!

# Dockerコンテナの起動
$ docker-compose up -d

これで、あなたのPCでChainlinkノードが動き始めた!まるで、キャンプの道具を組み立てるみたいだな!

次は、このChainlinkノードを使って、実際に外部のデータ(ここではBitcoinの価格)を取得するスマートコントラクトを書いてみよう。

このコントラクトは、ChainlinkのAggregatorV3Interfaceというインターフェースを使って、価格フィードにアクセスする。

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

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

contract PriceConsumerV3 {
    // Chainlinkの価格フィードコントラクトのアドレスを定義
    // ここでは、GoerliテストネットのBTC/USDフィードアドレスを使用
    // 実際のアドレスはChainlinkの公式ドキュメントで確認
    AggregatorV3Interface internal priceFeed;

    /**
     * @dev コンストラクタで、Chainlinkの価格フィードコントラクトを初期化
     */
    constructor() {
        // GoerliテストネットのBTC/USD価格フィードのアドレスを指定
        priceFeed = AggregatorV3Interface(0x6A6bE49c3A5a4A3C4A5A4A3C4A5A4A3C4A5A4A3C); // 仮のアドレスです!
    }

    /**
     * @dev 最新の価格情報を取得する関数
     */
    function getLatestPrice() public view returns (int256) {
        // Chainlinkから最新の価格データを取得
        (
            /*uint80 roundID*/,
            int256 price,
            /*uint256 startedAt*/,
            /*uint256 timeStamp*/,
            /*uint80 answeredInRound*/
        ) = priceFeed.latestRoundData();
        
        return price;
    }
}

このコントラクトをデプロイすれば、ブロックチェーンの外にある最新のBitcoin価格を、スマートコントラクトから安全に取得できる!

初心者キャンパー(あなた)
わあ!これなら、これまでできなかったことが、どんどん作れそうですね!

ベテランキャンパー(私)
そうだろ?Chainlinkは、ブロックチェーンの世界を、もっと広くて、現実世界と繋がった場所に変えてくれるんだ。まるで、このキャンプ場にインターネットを引いたようなものさ!

何に役立つか
スマートコントラクトに外部(オフチェーン)の情報を安全に取り込むための「橋渡し」役。

導入方法
Dockerを使って、Chainlinkノードを簡単に立てられる。

サンプルコード
スマートコントラクトから、Chainlinkの価格フィードにアクセスして、最新の価格情報を取得できる。

ベテランキャンパー(私)
さあ、これで君もChainlink使いの仲間入りだ。一緒に、もっと面白いスマートコントラクトの世界を冒険しようじゃないか!

初心者キャンパー(あなた)
はい!ありがとうございます!キャンプ飯でも作りながら、もっと色々教えてください!


smartcontractkit/chainlink




コントで学ぶ、高性能ベクトルデータベースMilvusの導入と活用法

今日のBBQの主役は、milvus-io/milvus、通称「ミルバス」!「ミルバスって、なんか難しそう…」って思いましたか?大丈夫!BBQに例えれば、ミルバスは「最高の焼き加減を自動で見つけてくれるスマートBBQグリル」みたいなものなんです。


【エンジニア向け】Infisicalで秘密情報も体重もスマートに管理!

ダイエット中のエンジニアさん、お疲れ様です!食事制限、運動、そしてコード. .. 毎日やることがいっぱいですよね。でも、ちょっと待ってください!あなたのコードの中にも、ひっそりと隠れている「秘密」はありませんか?そう、APIキーとかデータベースのパスワードとか


ソフトウェアエンジニア必見!Cobraで実現するプロ級Go CLIツール

「コマンドの解析が面倒だ…」 「ヘルプメッセージをいちいち書くのが大変…」 「サブコマンドをうまく管理できない…」もう大丈夫です!そんな悩みとは今日でサヨナラ。 今回は、あなたの開発を劇的にラクにする、魔法のツール「Cobra」をご紹介します!


【コントで学ぶ】彼女の下着は何色?で LiveKit を知る

はい、承知いたしました。ソフトウェアエンジニアの視点から、LiveKit がどのように役立つのか、導入方法、そしてサンプルコードの例を、コント形式で、わかりやすく丁寧にご説明しますね。登場人物佐藤 ソフトウェアエンジニア。最近、リアルタイムコミュニケーション機能の実装に頭を悩ませている。


冒険心をくすぐるFocalboard:自社運用型プロジェクト管理ツールの魅力

まるで、あなたのチームを救う「秘宝の地図」のような存在になるかもしれませんよ。Focalboard は、一言で言えば「自分だけの秘密基地」で作れる、高機能なプロジェクト管理ツールです。TrelloやNotion、Asanaのようなツールのオープンソース版で、自分たちのサーバーに設置して使うことができます。つまり、データの保管場所も、機能の拡張も、すべて自分たちの手の中にあるんです。まるで、自分たちだけの特別なギルドハウスを築き上げるような感覚ですね!


エンタープライズRAG基盤 WeKnora:Go言語で構築する、高速・高信頼なLLM知識検索フレームワークの解剖

今回は、中国の巨大テック企業Tencentが公開している、文書理解・検索・質問応答のためのLLM(大規模言語モデル)活用フレームワーク「Tencent/WeKnora」について見ていきましょう。「え、また新しいLLMフレームワーク?もうお腹いっぱいだよ


GOWA参上!WhatsApp自動化で開発効率を爆上げだ!

悪の組織に立ち向かう戦隊ヒーローのように、私たちソフトウェアエンジニアも日夜、様々な課題と戦っています。その中でも「WhatsAppの自動化」は、多くの人が直面する難題の一つでした。しかし、GOWAという強力な味方が現れました!GOWAは、Go言語で開発されたWhatsApp REST APIです。簡単に言うと、あなたのプログラムからWhatsAppを操作できるようにするツールですね。これまでのWhatsApp自動化は、ブラウザを操作したり、非公式なライブラリを使ったりと、不安定なものが多かったんです。でもGOWAは、公式のWhatsApp Webマルチデバイス機能に対応しているので、安定性が格段に向上しました!


居酒屋で語るFHEVM:ソフトウェアエンジニアが知るべき理由と使い方

ブロックチェーンは、データが公開され、誰でも閲覧できるという透明性が特徴です。これは良い面もありますが、機密性の高いデータを扱う際には大きな課題となります。例えば、医療情報や金融取引など、プライベートな情報を含むスマートコントラクトを構築する場合、そのままではプライバシーが丸見えになってしまいます。


クレーンゲーム攻略にTelegraf!?データで掴む勝利の秘訣

MC(陽気な兄ちゃん風)「さあ、みんなー!今日は特別企画!巷で噂のUFOキャッチャー、その攻略法を伝授しちゃうぜ!」アシスタント(冷静な妹風)「でも兄さん、クレーンゲームって運じゃないですか?攻略法なんてあるんですか?」MC「フフフ…甘いな妹よ!確かに運の要素はある。だが、そこにはデータが隠されているのさ!そして、そのデータを捉えるための秘密兵器が…そう、influxdata/telegrafだ!」


GoとReactが火を吹くぜ!次世代AIペネトレーションテスト「Pentagi」導入ガイド

いいかい、こいつはただの自動化ツールじゃねぇ。「AIのエージェント」が自分で考えて、ハッキング(ペネトレーションテスト)を完結させちまうっていう、とんでもねぇシロモノだ。「すっとこどっこい!人間がポチポチやってる間に、仕事が終わっちまうぞ!」ってな。それじゃ、いってみよう!