Spartaドキュメントリリース

概要 : ZetaChainのdevnet(別名Sparta)はライブです。docs.zetachain.comで私たちのドキュメントを読み、オムニチェーンdAppsの構築を開始しましょう。

私たちは、ZetaChainのSparta(devnet)ネットワーク上に、初となるオムニチェーンdAppsが構築できる、開発者ドキュメントの公開リリースの発表に興奮しています。先月、私たちはSpartaへの早期アクセスを一部の開発者チームに開放し、それ以来、目覚ましい進歩を遂げています。すべての肯定的なフィードバックで、私たちは、誰もが見るだけで、簡単にZetaChain上に構築が開始できるように、それをオープンにすることにしました。ドキュメントには、以下の概要が記載されています。

Spartaについて

現時点において、Sparta devnetは、開発者がZetaChainの最新の機能とAPIの更新が確認できます。注意点としては、私たちはメインネットを立ち上げる前に、ZetaChainブロックチェーンの複数のバージョンで異なる機能を維持し、テストし、実験する予定である点です。以下は、ZetaChainのネットワーク開発段階についての簡単な説明です。

Copr. 2006 Warner Bros. Pictures

Copr. 2006 Warner Bros. Pictures

開発体験の一端をのぞき見る

メッセージパッシングインターフェース(MPI)APIがSparta上に展開されたことにより、チェーン間で値やデータを送信するdAppsが簡単に構築できるようになりました。このセクションでは、開発者が自分のdAppsにクロスチェーン機能を追加することがいかに簡単であるかを紹介します。もちろん、詳細については、完全なドキュメントサイトを確認してください。

Spartaは現在、Goerli、BSC Testnet、Polygon Mumbaiで稼働しています。ZetaChainはチェーンアグノスティックなので、より多くのチェーンが時間とともにサポートされていく予定です。

インターフェース

まず、使用するインターフェースについて説明します。EVMコントラクトの場合は、以下のようなものです。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;interface ZetaInterfaces {
    /**
     * @dev Use SendInput to interact with our Message Passing Interface: zeta.send(SendInput)
     */
    struct SendInput {
	uint256 destinationChainId;
        bytes destinationAddress;
        /// @dev Total gas including the transactions on every chain
        uint256 gasLimit;
        /// @dev An encoded, arbitrary message to be parsed by the destination contract
        bytes message;
        /// @dev The amount of Zeta that you wanna send cross-chain, greater than or equal to 0
        uint256 zetaAmount;
        /// @dev Optional parameters for the Zeta protocol
        bytes zetaParams;
    }    /**
     * @dev Our Message Passing Interface will call your contract's onZetaMessage using this interface
     */
    struct ZetaMessage {
        bytes originSenderAddress;
        uint256 originChainId;
        address destinationAddress;
        uint256 zetaAmount;
        bytes message;
    }    /**
     * @dev Our Message Passing Interface will call your contract's onZetaRevert using this interface
     */
    struct ZetaRevert {
        address originSenderAddress;
        uint256 originChainId;
        bytes destinationAddress;
        uint256 destinationChainId;
        uint256 zetaAmount;
        bytes message;
    }
}interface ZetaReceiver {
    /**
     * @dev onZetaMessage will be called when a cross-chain message is delivered to your contract
     */
    function onZetaMessage(ZetaInterfaces.ZetaMessage calldata zetaMessage) external;    /**
     * @dev onZetaRevert will be called when a cross-chain message reverts
     * It's useful to rollback your contract's state
     */
    function onZetaRevert(ZetaInterfaces.ZetaRevert calldata zetaRevert) external;
}interface ZetaMPI {
    /**
     * @dev Sending value and data cross-chain is as easy as calling zeta.send(SendInput)
     */
    function send(ZetaInterfaces.SendInput calldata input) external;
}