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:

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.

ParametreAçıklama
targetMesajı alan hesabın adresi. Alıcı bir akıllı sözleşme veya bir EOA cüzdanı olabilir.
valueHedef sözleşme çağrılırken aktarılan Ether miktarı.
messageMesajı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.

ParametreAçıklama
fromMesajı gönderenin adresi.
toMesajın alıcısının adresi.
valueMesaj çağrısına iletilen msg.value.
nonceTekrar saldırısını önlemek için mesajın nonce’ı.
messageMesajın içeriği.
proofİşlemin doğruluğunu doğrulamak için kullanılan kanıt.

Sırada ne var?

Scroll Geliştirici haberlerini yakından takip edin
Güncellemeler, online ve yüz yüze etkinlikler, ekosistemdeki fırsatlar ve daha fazlası
Takip ettiğiniz için teşekkür ederiz!

Kaynaklar

Bizi Takip Edin