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




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

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


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

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


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

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


DockerとGoで実現!遠隔操作ブラウザ「ネコ」があなたの開発を変える

やあ、諸君! プロのソフトウェアエンジニアである君なら、きっと「もっと自由に、もっと安全に、ウェブの向こう側を覗き見たい」なんて考えたことがあるはずだ。まるでルパン三世がどんな厳重なセキュリティも掻い潜るようにね。今日紹介するのは、そんな君の願いを叶えるかもしれない、とびきりのツール「m1k1o/neko」、通称「ネコ」だ。


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

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


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

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


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

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


【Go言語バックエンド】PocketBase:一杯入魂!高速開発を叶える秘密の屋台

PocketBaseは、例えるなら「一杯入魂のこだわりラーメン屋台」のような存在です。「一杯入魂」 これ一本で認証、データベース、ファイルストレージ、リアルタイム同期まで、バックエンドに必要な機能がギュッと凝縮されています。まるで、店主が一人で麺打ちからスープ作り、盛り付けまでこなすようなイメージです。


ブロックチェーン開発を加速する安全な部品集、OpenZeppelin Contractsとは

「オープンツェッペリン・コントラクト」は、一言で言うと「安全なスマートコントラクトを開発するための部品集」です。スマートコントラクトは一度ブロックチェーンにデプロイすると、基本的に修正ができません。バグやセキュリティの脆弱性があると、資産が盗まれたり、システムが停止したりする重大な問題につながります。そこで、多くの開発者が長年にわたって監査し、テストを繰り返して安全性が証明されたコードを再利用できるようにしたのが、このライブラリなんです。


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

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