Scroll Messenger
Scroll Messenger sözleşmeleri, L1’den L2’ye veya L1’den L2’ye herhangi bir mesajın gönderilmesine izin verir. Bu, başka bir zincirdeki fonksiyonların güvenli ve izin gerektirmeyen bir şekilde yürütülmesine olanak tanır. L1’den L2’ye mesaj göndermek için L1’de dağıtılmış olan ‘L1ScrollMessenger’ mesajlaşma akıllı sözleşmesini kullanın. L2’den L1’e mesaj göndermek için L2’de dağıtılmış olan ‘L2ScrollMessenger’ sözleşmesini kullanın.
İşlemlerin L1’de sonuçlandırılması
L2’den gelecek tüm işlemlerin, Scroll Messenger sözleşmesindeki ‘relayMessageWithProof’ fonksiyonu kullanılarak tamamlanması gerekir. Bu sürece “Para Çekimi Gerçekleştirme İşlemi Gönderme” adını veriyoruz ve hem herhangi bir mesaj gönderilmesi hem de varlıkların bir ağ geçidi veya yönlendirici aracılığıyla aktarılması için gereklidir. ‘relayMessageWithProof’u kullandığınızda, işleminizin diğer parametrelerle birlikte “para çekme” mesajlarının grubuna dahil olduğunu gösteren bir Merkle katılım kanıtı sağlamanız gerekir. Bu kanıtı ve bu değerleri üretmek yerel olarak ve izinsiz olarak yapılabilir, ancak şu anda bu parametreleri almanın en kolay yolu backend API’lerimiz aracılığıyladır:
- Scroll Sepolia API: https://sepolia-api-bridge.scroll.io/api/
- Scroll API: https://mainnet-api-bridge.scroll.io/api/
L2’de orijinal işlemi başlatmaktan sorumlu olan EOA’nın veya sözleşmenin adresini “/claimable” uç noktasına sağlayın. API arka ucu, L1’deki işlemi başarılı bir şekilde sonuçlandırmak için gerekli tüm bilgileri size sağlayacaktır. Aşağıdaki örneğe bir göz atın:
https://sepolia-api-bridge.scroll.io/api/claimable?address=0x031407eaaffFB4f1EC2c999bE4477E52C81de3c5&page_size=10&page=1
API, işlem verilerinizi aşağıdaki biçimde döndürmelidir:
{ "errcode": 0, "errmsg": "", "data": { "result": [ { "hash": "0xa476850306d6ee52b127628ded34dcf2343570873cce9c5383bd497db48d4f9b", "amount": "", "to": "", "isL1": false, "l1Token": "", "l2Token": "", "blockNumber": 748, "blockTimestamp": null, "finalizeTx": { "hash": "", "amount": "", "to": "", "isL1": false, "blockNumber": 0, "blockTimestamp": null }, "claimInfo": { "from": "0x031407eaaffFB4f1EC2c999bE4477E52C81de3c5", "to": "0x1039057185CFe192d16c03F5656225821A193FD5", "value": "0", "nonce": "9", "batch_hash": "0x49a18d72dbceeb957f918947b532db452c031f528e7e6bf329007066638c5e50", "message": "0xa413686200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005686f6c6973000000000000000000000000000000000000000000000000000000", "proof": "0x69b4ee6cf9a38bed79668ddd347fef2bdff44c3760c9309fa41decfd60202d22ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5b4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3079f53171df5c0661d2afe86c4d97b6f34278daf6a0ea9baff5b4fc979d5629a5", "batch_index": "93" }, "createdTime": null } ], "total": 1 }}
Döndürülen ‘result’ json’unun altındaki ‘claimInfo’ nesnesi, işleminizi L1’de yürütmek için gereken tüm bilgileri içerir. ‘relayMessageWithProof’un ihtiyaç duyduğu parametreler şunlardır: ‘from’, ‘to’, ‘value’, ‘nonce’, ‘message’ ve ‘proof’. İşleminizi L1’de yürütmek ve sonlandırmak için bunları L1’deki ‘relayMessageWithProof’ işlevine sağlayın.
Messenger API
Scroll sözleşmesi API dokümanlarının tamamı için lütfen npm kitaplığını ziyaret edin.
sendMessage
function sendMessage( address target, uint256 value, bytes calldata message, uint256 gasLimit, address refundAddress) external payable;
Bir zincirden diğerine herhangi bir veri gönderir. Zincirler arası fonksiyonları yürütmemize olanak tanır.
Parametre | Açıklama |
---|---|
target | Mesajı alan hesabın adresi. Alıcı bir akıllı sözleşme veya bir EOA cüzdanı olabilir. |
value | Hedef sözleşme çağrılırken aktarılan Ether miktarı. |
message | Mesajın içeriği. Bu yürütülecek herhangi bir çağrının verileridir. |
gasLimit | İlgili zincirdeki mesaj aktarımını tamamlamak için gereken gaz limiti. |
refundAddress | İade ücretinin alınacağı hesabın adresi. |
relayMessageWithProof
function relayMessageWithProof( address from, address to, uint256 value, uint256 nonce, bytes memory message, L2MessageProof memory proof) external;
Mesaj kanıtı ile birlikte L2’den L1’e mesaj aktarın.
Parametre | Açıklama |
---|---|
from | Mesajı gönderenin adresi. |
to | Mesajın alıcısının adresi. |
value | Mesaj çağrısına iletilen msg.value. |
nonce | Tekrar saldırısını önlemek için mesajın nonce’ı. |
message | Mesajın içeriği. |
proof | İşlemin doğruluğunu doğrulamak için kullanılan kanıt. |