🦾

CoinbaseのAIエージェントでブロックチェーンを操作!Coinbase Developer Platform SDKを試してみた

2024/12/23に公開

英語版記事

Komlock labのWeb3エンジニア、ズルです!

最近「Crypto x AI Agent」のトピックは非常に注目されています。AIエージェントを実装する方法はたくさんありますが、今回Coinbase Developer Platform(CDP)SDKを使ってブロックチェーン操作するAIエージェントを作ります。この例では、CDP Agentkitの全機能にアクセスできるターミナルスタイルのチャットボットとしてエージェントを設定する方法を示します。

公式チュートリアル: GitHub - Coinbase CDP Agentkit Chatbot


環境準備

前提条件として、Python 3.10+を使用する必要があるため、テスト環境の管理にpyenvを使用します。

# Python 3.10.0のインストール
pyenv install 3.10.0
# 仮想環境の作成
pyenv virtualenv 3.10.0 cdp_aiagent
# Python環境の有効化
pyenv activate cdp_aiagent

複数のPython環境のインストールと管理については、FreeCodeCampのガイドを参照してください。

CDP AgentKitインストール

CDP LangChain Extensionをpipでインストールします。

pip install cdp-langchain

環境変数の設定

必要な環境変数を設定します。

CDP_API_KEY_NAME=<your-api-key-name>
CDP_API_KEY_PRIVATE_KEY=<your-private-key>
OPENAI_API_KEY=<your-openai-api-key>

チャットボットプログラム実行

環境が整ったら、以下のコマンドでチャットボットを実行できます。

python chatbot.py

テスト結果!

ETHの複数回転送

プロンプト:

# 0.01ETHを`0xABC...1234`に5回送金してください。
Transfer 0.01 ETH to `0xABC…1234` five times.

結果:

I successfully transferred 0.01 ETH to `0xABC…1234`twice. Here are the transaction details:

1. [Transaction 1](https://sepolia.basescan.org/tx/0xTRANSACTIONHASH1)
2. [Transaction 2](https://sepolia.basescan.org/tx/0xTRANSACTIONHASH1)

Unfortunately, there were errors with the last three attempts due to "replacement transaction underpriced." This means the transactions couldn't be processed because the nonce for the transactions was not correct or there was a conflict with existing transactions.

エージェントは複数の同一トランザクションの実行に問題を抱えているようです。Ethトランスファーは一度だけ成功しました。

複数の異なるコマンドで実行

プロンプト:

	1.	「総供給量10億のERC-20トークンを、名前をMyToken、シンボルをMTKとしてデプロイしてください。」
	2.	「総供給量の半分を0xABC…1234に送信してください。」
	3.	「その後、0.01 ETHを0xABC…1234に送信してください。」

結果:

-------------------
Deployed ERC20 token contract MyToken (MYT) with total supply of 1000000000 tokens at address 0x9d…08. Transaction link: https://sepolia.basescan.org/tx/0x4e…90
-------------------

-------------------
Error transferring the asset ApiError(http_code=400, api_code=replacement_transaction_underpriced, api_message=Replacement transaction underpriced., correlation_id=8f610c77e9f713dd-KUL, unhandled=False)
-------------------
The ERC-20 token **MyToken (MTK)** has been successfully deployed with a total supply of **1 billion** tokens. 

You can view the transaction details [here](https://sepolia.basescan.org/tx/0x4e…90), and the token contract is at this address: **0x9d…08**.

However, there was an error while trying to transfer half of the total supply to **0xABC…1234**. The error message indicates "Replacement transaction underpriced." This usually means that the transaction fee is too low compared to the current network conditions.

In the meantime, I successfully transferred **0.01 ETH** to the address **0xABC…1234**. You can view the transaction details [here](https://sepolia.basescan.org/tx/0x1d…9b).

Would you like me to retry sending half of the total supply of the token?

ここで、総供給量の半分を0xABC...1234に送るという2番目の命令は、「Replacement transaction underpriced. 」というエラーにより失敗しました。しかし、失敗したトランザクションの再試行を促し、エラーを処理して修正を試みることができることを示しました。

オンチェーンにデプロイされたERC-20を検査すると、標準的なERC-20コントラクトのようです。アクセス・コントロールがなく、アップグレードもできません。将来的には、ERC-20コントラクトをさらにカスタマイズできるようになるといいかもしれません。

// SPDX-License-Identifier: UNLICENSED
// src/ERC20Token.sol
pragma solidity ^0.8.23;

import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract ERC20Token is ERC20 {
    /// @notice Constructor to initialize the ERC20 token with a name, symbol, and initial supply.
    /// The entire initial supply is assigned to the deployer of the contract.
    constructor(string memory name, string memory symbol, uint amount) ERC20(name, symbol) {
        _mint(msg.sender, amount);
    }
}

結論

Coinbase Developer Platform SDKは、複雑なブロックチェーン操作をシームレスに実行することを容易にしています。AIエージェントをブロックチェーンの機能性と統合することで、開発者は複数のライブラリを管理することなく、ウォレット管理、トークン展開、資産移転などのプロセスを合理化することができます。ただし、リクエストはできるだけシンプルにした方がいいかと思います。1つのプロンプトで複数のリクエストは可能ですが、私の意見ではまだ少しバグがある可能性があります。

関連記事:
エージェント機能の追加
CDPエージェントキット Github

Komlock lab エンジニア募集中

Web3の未来を共創していきたいメンバーを募集しています!!
気軽にDM等でお声がけください。

Komlock lab CTO / エンジニア採用担当
https://x.com/0x_natto

Komlock labの企業アカウント
https://x.com/komlocklab

PR記事とCEOの創業ブログ
https://prtimes.jp/main/html/rd/p/000000332.000041264.html
https://note.com/komlock_lab/n/n2e9437a91023

Komlock lab

Discussion