EOS契約開発第13章-シーケンス化
1468 ワード
EOSオブジェクトのシーケンス化
一、オブジェクトのシーケンス化サポート
EOSは外部アクセス可能なオブジェクトをシーケンス化および逆シーケンス化する必要があり、契約呼び出し開始時にはabiに従ってactionを要求するパラメータ(json形式記述)をシーケンス化する必要があり、eosに送信されるaction要求のパラメータはシーケンス化されたオブジェクトであり、eosが要求を受信した後に逆シーケンス化する必要がある.eosがテーブルデータを要求する場合、テーブルデータを逆シーケンス化して要求の応答に出力する必要がある.
オブジェクトのシーケンス化と逆シーケンス化は主に要求の解析と要求応答のフォーマットに適用され,前後のインタラクション過程で用いられる.
eosの外部アクセス可能なオブジェクトはすべてシーケンス化と逆シーケンス化が必要であり、eos標準ライブラリはマクロEOSLIB_を定義している.SERIALIZEは、1つのオブジェクトに対するシーケンス化と逆シーケンス化のサポートを実現します.以下は、1つの外部アクセス可能なオブジェクトに対するシーケンス化のサポートです.
二、オブジェクトの逆シーケンス化
actionを実行する場合は、actionを呼び出すパラメータを使用する必要があります.要求中のactionのパラメータは、現在の要求のコンテキストにあり、シーケンス化されたオブジェクトであり、アクセスするには逆シーケンス化されたオブジェクトが必要です.eos標準ライブラリはactionパラメータの逆シーケンス化インタフェースを定義します.
三、シーケンス化の使用
次に、オブジェクトのシーケンス化の使用例を示す.まず、オブジェクトのシーケンス化サポートを定義し、ABI記述ファイルを生成して外部(フロントエンド)で使用し、契約actionの実行エントリで逆シーケンス化してaction呼び出しパラメータを取得する.
一、オブジェクトのシーケンス化サポート
EOSは外部アクセス可能なオブジェクトをシーケンス化および逆シーケンス化する必要があり、契約呼び出し開始時にはabiに従ってactionを要求するパラメータ(json形式記述)をシーケンス化する必要があり、eosに送信されるaction要求のパラメータはシーケンス化されたオブジェクトであり、eosが要求を受信した後に逆シーケンス化する必要がある.eosがテーブルデータを要求する場合、テーブルデータを逆シーケンス化して要求の応答に出力する必要がある.
オブジェクトのシーケンス化と逆シーケンス化は主に要求の解析と要求応答のフォーマットに適用され,前後のインタラクション過程で用いられる.
eosの外部アクセス可能なオブジェクトはすべてシーケンス化と逆シーケンス化が必要であり、eos標準ライブラリはマクロEOSLIB_を定義している.SERIALIZEは、1つのオブジェクトに対するシーケンス化と逆シーケンス化のサポートを実現します.以下は、1つの外部アクセス可能なオブジェクトに対するシーケンス化のサポートです.
/**
* @brief Data structure for movement
*/
struct movement {
uint32_t row;
uint32_t column;
EOSLIB_SERIALIZE( movement, (row)(column) )
};
/**
* @brief Action to make movement
*/
struct move {
account_name challenger;
account_name host;
account_name by; // the account who wants to make the move
movement mvt;
EOSLIB_SERIALIZE( move, (challenger)(host)(by)(mvt) )
};
二、オブジェクトの逆シーケンス化
actionを実行する場合は、actionを呼び出すパラメータを使用する必要があります.要求中のactionのパラメータは、現在の要求のコンテキストにあり、シーケンス化されたオブジェクトであり、アクセスするには逆シーケンス化されたオブジェクトが必要です.eos標準ライブラリはactionパラメータの逆シーケンス化インタフェースを定義します.
template
const T unpack_action_data();
三、シーケンス化の使用
次に、オブジェクトのシーケンス化の使用例を示す.まず、オブジェクトのシーケンス化サポートを定義し、ABI記述ファイルを生成して外部(フロントエンド)で使用し、契約actionの実行エントリで逆シーケンス化してaction呼び出しパラメータを取得する.