多索引表 (2)基本概念
生活随笔
收集整理的這篇文章主要介紹了
多索引表 (2)基本概念
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 主鍵和二級索引
1.1 multi_index的主鍵
必須是唯一的,且類型是uint64_t,且須實現primary_key()方法返回主鍵字段。
- eosio::multi_index支持類似的語義,但是該對象的主鍵在eosio::multi_index容器必須是唯一的無符號64位整數。
- eosio::multi_index中的對象容器按主鍵索引按無符號64位整數主鍵的升序排序。
1.2 二級索引
-
Multi-Index表最多可以使用16個二級索引,可以通過多索引進行排序;
-
得為每個二級索引定義一個函數,用于從Multi-Index表的函數中獲取鍵,這個函數會被indexed_by()使用。
1.2.1 二級索引的數據類型
- uint64_t:64位無符號整型鍵
- uint128_t:128位無符號整型鍵
- eosio::checksum256:256位固定大小字典鍵
- double:雙精度浮點鍵
- long double
2. EOS智能合約與EOS數據庫的數據交互
智能合約無法直接操作存儲在硬盤中的數據表,而是需要使用multi_index作為中間工具(或者叫容器),每個multi_index實例都與一個特定賬戶的特定數據表進行交互(取決于實例化時的參數)
3. 動作上下文 action context
包含內容
- 當前交易數據 the Current Transaction Data.
- 交易頭 transaction header
- 交易中所有原始操作的動作有序vector
- 交易中上下文無關操作的向量
- 由實現契約的代碼定義的可修剪上下文無關數據集(作為blob向量提供)以及blob向量的完整索引。
a prunable set of context free data (provided as a vector of blobs) defined by the code that implements the contract, and a full index to the vector of blobs.
在操作處理之前,EOSIO會為該操作設置一個干凈的工作內存,用以存儲動作的工作內存變量。
一個動作的工作內存僅對該動作可用,甚至對同一事務中的動作也是如此。
當執行另一個操作時可能設置的變量在另一個操作的上下文中不可用。在操作之間傳遞狀態的唯一方法是將其持久化并從EOSIO數據庫中檢索。
3.1 一個動作的其他功能
-在EOSIO持久存儲中保持更改狀態
-將當前交易通知收件人
-向新接收方發送內聯操作請求
-生成新(遞延)交易記錄
-取消現有(正在進行的)延遲事務(即取消已提交的延遲事務請求)
總結
以上是生活随笔為你收集整理的多索引表 (2)基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多索引表 (1)boost::multi
- 下一篇: 多索引表 (4)multi_index.