Rapstonだと、送金処理ができなかったので、private netに接続します。
勝った時のみ、Etherの送金処理を実行します。
<div class="container"> <h1>Ethereum</h1> <div id="balanceArea"></div> <br><br> <h1>じゃんけん</h1> <button onclick="R_Click(0)">グー</button> <button onclick="R_Click(1)">チョキ</button> <button onclick="R_Click(2)">パー</button> <br><br> <div id="area1"></div> <div id="area2"></div> </div> <script> let balanceArea = document.getElementById('balanceArea'); const web3 = new Web3(); const userWallet = ""; const adminWallet = ""; web3.setProvider(new web3.providers.HttpProvider('http://192.168.33.10:8545')); function R_Click(p_janken_r){ let janken = ["グー","チョキ","パー"]; let janken_r = Math.floor(Math.random()*3); let p_janken = ["グー","チョキ","パー"]; if (janken_r === p_janken_r) { Result_end = "あいこです"; } else if(p_janken_r === 0 && janken_r === 1) { Result_end = "あなたの【勝ち】"; win(); } else if(p_janken_r === 1 && janken_r === 2) { Result_end = "あなたの【勝ち】"; win(); } else if(p_janken_r === 2 && janken_r === 0) { Result_end = "あなたの【勝ち】"; win(); } else { Result_end = "あなたの【負け】"; lose(); } document.getElementById("area1").innerHTML = p_janken[p_janken_r] +"を選択しました。ジャンケンの結果は・・・?<br><br>"; document.getElementById("area2").innerHTML = "相手は" + janken[janken_r] + "! "+ Result_end; } main(); async function main(){ web3.eth.getBalance(adminWallet).then((result, error) => { const balance = web3.utils.fromWei(result, 'ether'); console.log(balance); balanceArea.innerHTML = balance + " eth"; }); } async function win(){ console.log("win"); var balance = web3.eth.sendTransaction({from: userWallet, to:adminWallet, value:200}); console.log(balance); main(); } async function lose(){ main(); } </script>
トランザクションが生成されてブロックで承認されないと送金処理は実行されないので、じゃんけんに勝っても直ぐにはbalanceに反映されない。
なるほど、理解が深まった。