Transaction Hash Verification

Ana sayfa Forumlar Kodlar Transaction Hash Verification

  • Bu konu boş.
1 yazı görüntüleniyor (toplam 1)
  • Yazar
    Yazılar
  • #61
    admin
    Anahtar yönetici

    <!DOCTYPE html>
    <html lang=”tr”>
    <head>
    <meta charset=”UTF-8″>
    <meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
    <title>Transaction Hash Verification</title>
    <script src=”https://cdn.jsdelivr.net/npm/web3@1.5.0/dist/web3.min.js”></script&gt;
    </head>
    <body>
    <h2>Transaction Hash Verification</h2>
    <div id=”transactionHashForm”>
    <label for=”transactionHash”>Transaction Hash:</label>
    <input type=”text” id=”transactionHash” name=”transactionHash” value=”0x90ebf6b1732c5a6fc9822d7e9638e6871cde7aa7d5666aa821e9dd79d660f622″ required>
    <br><br>
    <label for=”recipientAddress”>Recipient Address:</label>
    <input type=”text” id=”recipientAddress” name=”recipientAddress” value=”0x386920B01e6a8C456291391e4d20a2a7F730D517″ required>
    <br><br>
    <button type=”button” id=”verifyButton”>TEST ET</button>
    </div>

    <div id=”verificationResult”></div>

    <div id=”recipientamountResult”></div>

    <script>
    async function loadWeb3() {
    const providerUrl = “https://api.avax.network/ext/bc/C/rpc&#8221;;
    window.web3 = new Web3(new Web3.providers.HttpProvider(providerUrl));
    }

    async function verifyTransaction(transactionHash, recipientAddress) {
    try {
    const transaction = await web3.eth.getTransaction(transactionHash);

    // Decode input data
    const inputData = transaction.input;
    const methodId = inputData.slice(0, 10); // First 10 characters are method ID
    const encodedData = inputData.slice(10); // Rest is the encoded parameters

    const decodedData = web3.eth.abi.decodeParameters(
    [
    {
    “type”: “address”,
    “name”: “_recipient”
    },
    {
    “type”: “uint256”,
    “name”: “_amount”
    }
    ],
    encodedData
    );

    // Convert decoded data to a string for displaying
    const decodedDataString = JSON.stringify(decodedData, null, 2);
    //alert(‘Decoded Data: ‘+ decodedDataString);

    // Alınan değerler
    const recipient = decodedData._recipient;
    const amount = decodedData._amount;

    document.getElementById(‘recipientamountResult’).innerHTML = ‘Recipient: ‘+ recipient + ‘<br>’ + ‘Amount: ‘+ amount;

    if (!transaction) {
    return { valid: false, message: ‘Transaction not found’ };
    }

    if (transaction.to.toLowerCase() === recipientAddress.toLowerCase()) {
    return { valid: true, message: ‘Transaction is valid and sent to the correct address’ };
    } else {
    return { valid: false, message: ‘Transaction was sent to an incorrect address’ };
    }
    } catch (error) {
    console.error(‘Error verifying transaction:’, error);
    return { valid: false, message: ‘An error occurred during transaction verification’ };
    }
    }

    document.getElementById(‘verifyButton’).addEventListener(‘click’, async function (event) {
    event.preventDefault();

    const transactionHash = document.getElementById(‘transactionHash’).value;
    const recipientAddress = document.getElementById(‘recipientAddress’).value;

    const result = await verifyTransaction(transactionHash, recipientAddress);

    document.getElementById(‘verificationResult’).innerText = result.message;
    document.getElementById(‘verificationResult’).style.color = result.valid ? ‘green’ : ‘red’;
    });

    window.addEventListener(‘load’, async () => {
    await loadWeb3();
    });
    </script>
    </body>
    </html>

     


     

    Bu kod, bir Ethereum işlem hash’inin belirli bir alıcı adresine gönderilip gönderilmediğini doğrulayan bir web sayfası oluşturur. İşte kod hakkında detaylı bir açıklama:

    HTML Bölümü:

    • <!DOCTYPE html>: Bu, belgenin HTML5 standardını kullandığını belirtir.
    • <html lang="tr">: HTML belgesinin dilini Türkçe olarak ayarlar.
    • <head>: Bu bölümde, sayfanın meta verileri, karakter seti, başlık ve dış JavaScript dosyasına bağlantı yer alır.
      • <meta charset="UTF-8">: Sayfanın karakter setini UTF-8 olarak ayarlar, bu da tüm karakterlerin doğru görüntülenmesini sağlar.
      • <meta name="viewport" content="width=device-width, initial-scale=1.0">: Sayfanın mobil cihazlarda doğru görüntülenmesini sağlar.
      • <title>Transaction Hash Verification</title>: Sayfanın başlık etiketini belirler.
      • <script src="https://cdn.jsdelivr.net/npm/web3@1.5.0/dist/web3.min.js"></script>: Web3.js kütüphanesini sayfaya dahil eder. Web3.js, Ethereum blockchain’i ile etkileşim kurmak için kullanılan bir JavaScript kütüphanesidir.

    Body Bölümü:

    • <h2>Transaction Hash Verification</h2>: Sayfanın başlığını belirler.
    • <div id="transactionHashForm">: Kullanıcının işlem hash’i ve alıcı adresini girmesi için bir form içerir.
      • <label> ve <input>: Kullanıcıdan işlem hash’i ve alıcı adresi girmesini isteyen etiketler ve giriş kutuları sağlar.
      • <button type="button" id="verifyButton">TEST ET</button>: Kullanıcı işlemi başlatmak için bu butona tıklayabilir.
    • <div id="verificationResult"></div>: Doğrulama sonucu burada gösterilir.
    • <div id="recipientamountResult"></div>: İşlemden çıkarılan alıcı ve miktar bilgileri burada gösterilir.

    JavaScript Bölümü:

    • async function loadWeb3(): Web3.js kütüphanesini yüklemek ve Ethereum ağına bağlanmak için kullanılır.
      • const providerUrl = "https://api.avax.network/ext/bc/C/rpc";: Bağlanılacak RPC URL’si, bu durumda Avalanche ağına ait.
      • window.web3 = new Web3(new Web3.providers.HttpProvider(providerUrl));: Web3.js örneği oluşturulur ve RPC bağlantısı sağlanır.
    • async function verifyTransaction(transactionHash, recipientAddress): Bu fonksiyon, verilen işlem hash’ini ve alıcı adresini doğrular.
      • const transaction = await web3.eth.getTransaction(transactionHash);: İşlem hash’ine göre işlem bilgilerini blockchain’den çeker.
      • const inputData = transaction.input;: İşlem verilerini (input data) alır. Bu veri, akıllı kontrata gönderilen parametreleri içerir.
      • const methodId = inputData.slice(0, 10);: İlk 10 karakter, metod ID’sini temsil eder. Geriye kalan karakterler ise kodlanmış parametrelerdir.
      • const encodedData = inputData.slice(10);: Kodlanmış parametreleri ayırır.
      • const decodedData = web3.eth.abi.decodeParameters(...): Kodlanmış parametreleri çözer ve _recipient ve _amount değerlerini çıkarır.
      • document.getElementById('recipientamountResult').innerHTML = ...: Çözülen parametreler (alıcı ve miktar) ekranda görüntülenir.
      • if (!transaction) { ... }: Eğer işlem bulunamazsa, “Transaction not found” mesajı döner.
      • if (transaction.to.toLowerCase() === recipientAddress.toLowerCase()) { ... }: Eğer işlem, girilen alıcı adresine gönderildiyse, geçerli olarak işaretlenir. Aksi halde geçersiz olarak işaretlenir.
    • document.getElementById('verifyButton').addEventListener('click', async function (event) { ... });: Kullanıcı “TEST ET” butonuna tıkladığında verifyTransaction fonksiyonunu çağırır ve sonucu ekrana yazar.
    • window.addEventListener('load', async () => { await loadWeb3(); });: Sayfa yüklendiğinde Web3.js’yi yüklemek için loadWeb3 fonksiyonunu çağırır.

    Kısaca:

    Bu kod, bir Ethereum işleminin belirli bir adrese yapılıp yapılmadığını kontrol etmek için kullanılır. Kullanıcıdan işlem hash’i ve alıcı adresi alınır, bu bilgilerle blockchain’den işlem bilgileri alınır, parametreler çözülür ve doğrulama yapılır. Sonuç olarak işlem geçerli olup olmadığı kullanıcıya gösterilir.

1 yazı görüntüleniyor (toplam 1)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.