新聞中心
同步和觀看地址
定義
您可以獲取所有歷史交易并實時收聽新交易。 它需要以下信息:

西疇ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
- ?
ChainId?(必填):要同步的鏈 - ?
Address?(必填):您將為此事件收聽的地址。 - ?
Sync_historical?(可選):同步歷史數據選項。 默認值true
歷史事件限額
如果創(chuàng)建的同步作業(yè)會導致檢索更多歷史事件,則?Sync_historical?選項將被禁用并且不會保存歷史數據??梢月撓抵С秩藛T升級您的帳戶以啟用保存它,無論如何,但在這樣做之前要仔細考慮是否真的有必要。可以實時處理事件而無需將數據保存到數據庫中。
監(jiān)控經過身份驗證的用戶
Moralis 服務器為在某些時候通過您的應用程序進行身份驗證的用戶實時同步所有交易和余額。 您無需執(zhí)行任何操作即可啟用此功能,因為它在所有 Moralis 服務器中默認啟用。
與往常一樣,我們希望您專注于用戶體驗,并將同步區(qū)塊鏈數據這一平凡而復雜的任務留給我們。
Moralis Server 將實時將數據插入和更新到您的數據庫中,以便您通過簡單的數據庫查詢即可獲取用戶的所有最新交易和余額。
監(jiān)控非認證地址
默認情況下,?EthTransactions ?集合中只會出現注冊用戶的交易數據。 要觀看特定地址(例如集中式交易所熱錢包),請?zhí)砑有碌耐胶陀^看地址插件,輸入地址,然后單擊“添加插件”按鈕。
這將啟動一個同步作業(yè)并向 ?WatchedXxxAddress ?集合添加一個條目,其中“?Xxx?”是此處定義的鏈名稱之一。 一旦交易被同步,它們就可以像任何其他交易一樣被查詢,包括實時查詢。
const Web3 = new Moralis.Web3();
const binanceWallet = "0x...";
// create query
const query = new Moralis.Query("EthTransactions");
query.equalTo("to_address", binanceWallet);
// subscribe for real-time updates
const subscription = await query.subscribe();
subscription.on("create", function (data) {
const amountEth = web3.utils.fromWei(data.attributes.value);
console.log(`${amountEth} deposited to Binance`);
});注意:在新的 Nitro 服務器上,訂閱將更新而不是創(chuàng)建
注意:最新版本服務器的表名將是 ?_AddressSyncStatus ?而不是 ?WatchedXxxAddress ?
請記住,如果啟用了 ?Sync_historical ?選項,則查看具有大量交易量的地址將導致存儲大量數據。
歷史交易限額
如果監(jiān)視的地址會導致檢索更多歷史事務,則 ?Sync_historical ?選項將被禁用并且不會保存任何歷史數據。 可以聯系支持以升級您的帳戶以啟用保存它,但在這樣做之前請仔細考慮是否真的有必要。 無需將數據保存到數據庫即可實時處理新事務。 您也可以調用 ?Deep Index API? 選擇性地查詢歷史數據。
從代碼中查看地址
?Sync and Watch Address? 插件在底層調用了一個名為 ?watchXxxAddress ?的云函數,其中“?Xxx?”是這里的鏈名。 這些云函數也可以直接從自己的代碼中調用!
const results = await Moralis.Cloud.run("watchBscAddress", {
address: "0x...",
});默認情況下,只有使用此云功能被監(jiān)視的地址所做的新交易才會被添加到數據庫中。 如果您還想為要查看的地址添加歷史數據,可以添加 ?sync_historical:true?:
const results = await Moralis.Cloud.run("watchBscAddress", {
address: "0x...",
sync_historical: true,
});監(jiān)視地址函數在開始作業(yè)時不返回任何值。 它們仍然是異步的! 一旦 ?promise返回同步的事務,它們應該在相應鏈的 ?XxxTransactions ?表中。
取消監(jiān)視代碼中的地址
當刪除某個地址上的同步和監(jiān)視地址插件時,該插件會在后臺調用一個名為 ?unwatchXxxAddress ?的云函數,其中“?Xxx?”是這里的鏈名。 和代碼看地址一樣,這個云函數也可以直接從自己的代碼中調用!
const results = await Moralis.Cloud.run("unwatchBscAddress", {
address: "0x...",
});
未經確認的交易
測試網和主網上的交易可能需要一段時間才能得到確認。 當 Moralis 檢測到處于未確認狀態(tài)的新交易(或事件)時,這些交易將被放入交易表中,例如 ?EthTransactions?,并帶有確認:?false?。 當交易被確認時,狀態(tài)更新為已確認:?true?。
需要注意的是,不同的區(qū)塊鏈會有不同的確認號來保證交易的有效性。 這意味著,為了讓交易將其在 ?DB ?中的確認值更改為 ?true?,它需要一定數量的確認:
- ?
Ethereum?: 12 - ?
Polygon?: 100 - ?
BSC?: 18 - ?
Avalanche?: 100 - ?
Fantom?: 100
觸發(fā)器的后果
這意味著,如果您在具有已確認屬性(如 ?EthTransactions?)或任何“同步和觀察合同事件”集合的集合上定義 ?afterSave ?觸發(fā)器,則觸發(fā)器可以被觸發(fā)兩次——一次為確認:false,再次為確認:true!
禁用用戶歷史同步
默認情況下,Moralis 將自動同步您用戶過去的所有交易。 這是非常耗費資源的,CPU 和 RAM 可能是這里的瓶頸。 想象一下,你有 5000 個用戶,他們都有 100 次交易的歷史——突然你的服務器需要處理 500,000 個歷史事件,這將很快消耗 CPU 和 RAM 資源,特別是如果你有很多新用戶同時加入。
如果您知道不需要所有用戶的所有歷史記錄,則應在服務器設置中禁用歷史同步。 見下圖。
通過 API 獲取歷史數據
請記住,禁用歷史同步僅意味著您的數據庫不會被歷史事件填充。
您仍然可以使用 Web3 API 函數獲取所有歷史數據。 Web3 API 完全獨立于數據庫的內容。
因此,請查看 Web3 API 的功能,如果 Web3 API 中的歷史端點足以滿足您的用例,那么您應該禁用服務器中的歷史同步,因為您不會使用它。
什么時候不應該禁用歷史同步?
如果您需要運行 Web3 API 不提供的某些特定查詢,您需要啟用歷史同步,以便您可以使用 Moralis 提供的數據庫查詢對歷史數據運行自定義查詢。
智能合約歷史事件仍然有效
請記住,此設置只會禁用自動獲取用戶歷史記錄。 如果您添加了智能合約事件 - 它們仍會獲取歷史記錄并將該信息放入您的數據庫,因為它們獨立于此設置工作。
優(yōu)化示例
在本節(jié)中,我們將給出具體的優(yōu)化示例,可以為您節(jié)省大量 CPU 和 RAM 使用率。
僅與您的合同相關的歷史和活動
假設你有一個 ?NFT ?合約,你只關心與該合約相關的用戶歷史和用戶實時交易。
在這種情況下,您應該按照上面的說明禁用歷史同步,而只需為您的 ?NFT ?代幣合約添加智能合約事件同步。 這樣,您將只保留歷史記錄并查看智能合約的實時交易,而不是其他任何東西。
集合模式
Moralis Server 將獲得來自或向任何經過身份驗證的用戶地址(包括鏈接地址)或監(jiān)視地址進行的所有價值轉移、代幣轉移 (ERC20) 和 ?NFT轉移(?ERC721?、?ERC1155?)。 在創(chuàng)建用戶(或查看地址)后,Moralis 服務器將為 Moralis 服務器同步的每個區(qū)塊鏈填充以下集合。 這些名稱將以它們來自的鏈作為前綴。
- ?
xxxTransactions? - ?
xxxTokenTransfers? - ?
xxxTokenBalances? - ?
xxxNFTTransfers? - ?
xxxNFTOwners?
這些集合可以在“?Moralis Dashboard?”中查看。
鏈前綴
| Chain | Prefix |
| Ethereum Mainnet, Ropsten, Georli, Kovan, Local Devchain | ?Eth? |
| Binance Smart Chain Mainnet, Testnet | ?Bsc? |
| Polygon (Matic) Mainnet, Mumbai Testnet | ?Matic? |
| Elrond | ?Erd? |
交易
在該鏈上與用戶或受監(jiān)視地址之間的所有交易不包括智能合約內的內部轉賬,例如代幣轉賬。
{
"objectId": String,
"block_hash": String,
"gas_price": Number,
"block_timestamp": Date,
"receipt_cumulative_gas_used": Number,
"ACL": ACL,
"receipt_gas_used": Number,
"input": String,
"receipt_contract_address": String,
"hash": String,
"updatedAt": Date,
"nonce": Number,
"to_address": String,
"transaction_index": Number,
"value": String,
"gas": Number,
"receipt_status": Number,
"createdAt": Date,
"block_number": Number,
"from_address": String,
"confirmed": Boolean,
}
代幣轉移
用戶地址和監(jiān)視地址的所有 ERC20 代幣轉移事件都將在此處找到。
{
"objectId": String,
"block_hash": String,
"block_timestamp": Date,
"ACL": ACL,
"updatedAt": Date,
"token_address": String,
"transaction_hash": String,
"to_address": String,
"transaction_index": Number,
"value": String,
"log_index": Number,
"createdAt": Date,
"block_number": Number,
"from_address": String,
"confirmed": Boolean,
}
代幣余額
用戶和觀察地址代幣余額的摘要。 這將在進行新交易時實時更新。
{
"objectId": String,
"decimals": String,
"contract_type": String,
"ACL": ACL,
"name": String,
"updatedAt": Date,
"token_address": String,
"address": String,
"symbol": String,
"createdAt": Date,
"block_number": Number,
"balance": String,
}
NFT轉賬
轉移用戶和觀察地址的 ?NFT?(?ERC721 ?和 ?ERC1155 ?代幣)事件。
{
"objectId": String,
"block_hash": String,
"token_id": String,
"block_timestamp": Date,
"contract_type": String,
"ACL": ACL,
"updatedAt": Date,
"token_address": String,
"transaction_hash": String,
"to_address": String,
"transaction_index": Number,
"log_index": Number,
"amount": String,
"createdAt": Date,
"block_number": Number,
"transaction_type": String,
"from_address": String,
"confirmed": Boolean,
}
NFTO所有者
用戶和觀察地址的 ?NFT ?余額(?ERC721 ?和 ?ERC1155 ?代幣)摘要。
{
"objectId": String,
"token_id": String,
"owner_of": String,
"token_uri": String,
"contract_type": String,
"ACL": ACL,
"name": String,
"updatedAt": Date,
"token_address": String,
"amount": Sring,
"symbol": String,
"createdAt": Date,
"block_number": Number,
} 文章名稱:創(chuàng)新互聯Moralis教程:Moralis用戶余額和交易
當前網址:http://www.5511xx.com/article/ccepeph.html


咨詢
建站咨詢
