ソフトウェアエンジニアが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




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

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


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

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


NginxとGoで作る、お手軽ログイン機能

一言で言うと、Webアプリケーションに手軽にログイン画面を追加するためのツールです。通常、Webアプリをパスワードで保護しようとすると、ユーザー管理やセッション管理など、色々な処理を自分で実装する必要があります。これは結構な手間ですし、セキュリティを考慮すると慎重な設計が求められます。


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

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


「Linera」で実現する高速Dapps開発 〜孤独のグルメ風エンジニア解説〜

孤独のグルメ風に解説しますね。ふぅ、今日も一日お疲れさん。取引先との打ち合わせも終わったし、この後は少し自分だけの時間だ。新しい技術の情報を漁るのが、最近のささやかな楽しみになっている。(PCをパチパチ. ..)ん?なんだこれは. ..Linera


「太陽光でタダ充電」を叶えるEVCCの仕組み:ソフトウェアエンジニアが解説する設定と互換性

ここでご紹介する evcc-io/evcc は、まさにその悩みを解決してくれる、ソフトウェアエンジニアから見て「これは使える!」と思える素晴らしいオープンソースプロジェクトです。evcc("Electric Vehicle Charge Controller"の略)は、電気自動車(EV)の充電を賢くコントロールするためのエネルギー管理システムです。


妹が教える!エンジニアのためのOllama活用術

ねえねえ、最近流行りの「Ollama」って知ってる?お兄ちゃんの好きそうな、めちゃくちゃ便利なツールなんだよ!Ollamaはね、お兄ちゃんのパソコンで、いろんなAIモデルを簡単に動かせるようにしてくれるすごーいツールなんだ!今までだと、AIモデルを使おうと思ったら、いろいろ難しそうな設定をしなきゃいけなかったり、パソコンの性能が足りなかったりしたんだけど、Ollamaを使えば、そんな心配はほとんどいらなくなるんだって!


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

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


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

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


Go言語でCLIを楽しく!Bubble Tea入門

やぁ、ソフトウェアエンジニアの皆さん!今日は、Go言語を使ったCLI開発を劇的に楽しくしてくれるフレームワーク「Bubble Tea」について、飲み比べコント風にご紹介しますね。このお酒、見た目は素朴な「ターミナル画面」なんだけど、一口飲むと「わ、これすごい!」ってなるんですよ。