ããã³ããšã³ãæè¡ãçšãããããã¯ãã§ãŒã³ã®ãã©ã³ã¶ã¯ã·ã§ã³ããŒã«ã«ãããä¿çäžãã©ã³ã¶ã¯ã·ã§ã³ã®ç®¡çã«é¢ããå æ¬çã¬ã€ããã¢ãŒããã¯ãã£ããã¹ããã©ã¯ãã£ã¹ãã°ããŒãã«ãªãããã¯ãã§ãŒã³ã¢ããªã±ãŒã·ã§ã³ã®ããã®ã»ãã¥ãªãã£èå¯ã解説ããŸãã
ããã³ããšã³ããããã¯ãã§ãŒã³ã®ãã©ã³ã¶ã¯ã·ã§ã³ããŒã«ïŒä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³ç®¡ç
ãã©ã³ã¶ã¯ã·ã§ã³ããŒã«ïŒãã°ãã°ã¡ã³ããŒã«ïŒmempoolïŒãšåŒã°ããïŒã¯ããããã¯ãã§ãŒã³ã¢ãŒããã¯ãã£ã®éèŠãªæ§æèŠçŽ ã§ããããã¯ããããã¯ãŒã¯ã«éä¿¡ããããã®ã®ããŸã ãããã¯ã«å«ãŸããŠããªããã©ã³ã¶ã¯ã·ã§ã³ã®ãªã¹ããä¿æããŠããŸããããã³ããšã³ããããã®ããŒã«ãšå¯Ÿè©±ãã管çããæ¹æ³ãçè§£ããããšã¯ãå ç¢ã§ãŠãŒã¶ãŒãã¬ã³ããªãŒãªåæ£åã¢ããªã±ãŒã·ã§ã³ïŒdAppïŒãæ§ç¯ããããã«äžå¯æ¬ ã§ãããã®ã¬ã€ãã§ã¯ãããã³ããšã³ãã§ã®ãããã¯ãã§ãŒã³ã®ãã©ã³ã¶ã¯ã·ã§ã³ããŒã«ç®¡çã®è©³çްã«ã€ããŠãã¢ãŒããã¯ãã£ã«é¢ããèæ ®äºé ããã¹ããã©ã¯ãã£ã¹ããããŠã·ãŒã ã¬ã¹ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã確ä¿ããããã®ã»ãã¥ãªãã£å¯Ÿçã解説ããŸãã
ãããã¯ãã§ãŒã³ã®ãã©ã³ã¶ã¯ã·ã§ã³ããŒã«ïŒã¡ã³ããŒã«ïŒãçè§£ãã
ããã³ããšã³ãã®åŽé¢ã«èžã¿èŸŒãåã«ããã©ã³ã¶ã¯ã·ã§ã³ããŒã«ã®äžå¿çãªæ©èœãçè§£ããããšãéèŠã§ããã¡ã³ããŒã«ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãæ€èšŒãããæ¬¡ã®ãããã¯ã«å«ãŸããã®ãåŸ ã€åæ£åã®ã¹ãã¬ãŒãžãšãªã¢ã§ãããããã¯ãŒã¯å ã®ããŒãã¯ããããç¬èªã®ããŒãžã§ã³ã®ã¡ã³ããŒã«ãç¶æããŠãããããã¯ããŒãã®èšå®ããããã¯ãŒã¯ã®ç¶æ ã«ãã£ãŠãããã«ç°ãªãå ŽåããããŸããã¡ã³ããŒã«å ã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯éåžžããã©ã³ã¶ã¯ã·ã§ã³ææ°æïŒã€ãŒãµãªã¢ã ã§ã¯ã¬ã¹äŸ¡æ ŒïŒã«åºã¥ããŠåªå é äœãä»ããããææ°æãé«ãã»ã©ãã€ããŒãããªããŒã¿ãŒããããæ©ããããã¯ã«å«ããã€ã³ã»ã³ãã£ããåããŸãã
ã¡ã³ããŒã«ã®äž»ãªç¹åŸŽïŒ
- åçïŒ æ°ãããã©ã³ã¶ã¯ã·ã§ã³ãéä¿¡ãããæ¢åã®ãã®ããããã¯ã«å«ãŸããã«ã€ããŠãã¡ã³ããŒã«ã®å 容ã¯çµ¶ããå€åããŸãã
- 忣åïŒ åããŒããç¬èªã®ã¡ã³ããŒã«ãç¶æããããããããã¯ãŒã¯å šäœã§ããããªå·®ç°ãçããŸãã
- 容éå¶éïŒ ã¡ã³ããŒã«ã«ã¯å®¹éå¶éãããããããã¯ãŒã¯ãéåžžã«æ··éããŠããæéäžã¯ãææ°æã®äœããã©ã³ã¶ã¯ã·ã§ã³ãããŒãã«ãã£ãŠç Žæ£ãããããšããããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³ã®åªå é äœä»ãïŒ ãã©ã³ã¶ã¯ã·ã§ã³ã¯éåžžããã©ã³ã¶ã¯ã·ã§ã³ææ°æïŒã€ãŒãµãªã¢ã ããŒã¹ã®ãããã¯ãŒã¯ã§ã¯ã¬ã¹äŸ¡æ ŒãšãåŒã°ããïŒã«åºã¥ããŠåªå é äœãä»ããããŸãã
ããã³ããšã³ããšãã©ã³ã¶ã¯ã·ã§ã³ããŒã«ã®çžäºäœçš
ããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã¯ããããã¯ãã§ãŒã³ããŒãã®ããã«çŽæ¥ã¡ã³ããŒã«ãšå¯Ÿè©±ããããã§ã¯ãããŸããã代ããã«ãAPIãWeb3ã©ã€ãã©ãªãå©çšããŠããããã¯ãã§ãŒã³ããŒããã¡ã³ããŒã«ããŒã¿ãæäŸããå°éãµãŒãã¹ãšéä¿¡ããŸãã以äžã«ãäžè¬çãªæ¹æ³ãšèæ ®äºé ãæŠèª¬ããŸãã
1. Web3ã©ã€ãã©ãªã®äœ¿çš
Web3ã©ã€ãã©ãªïŒ`web3.js`ã`ethers.js`ãªã©ïŒã¯ãããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ããã€ãŒãµãªã¢ã äºæã®ãããã¯ãã§ãŒã³ãšå¯Ÿè©±ããããã®ããŒã«ã»ãããæäŸããŸãããããã®ã©ã€ãã©ãªã¯ã¡ã³ããŒã«ã®çããŒã¿ãžã®çŽæ¥ã¢ã¯ã»ã¹ã¯æäŸããŸãããã以äžã®ããã®ã¡ãœãããæäŸããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³ã®éä¿¡ïŒ ãããã¯ãŒã¯ã«ãã©ã³ã¶ã¯ã·ã§ã³ãéä¿¡ãããããã¡ã³ããŒã«ã«å ¥ããŸãã
- ã¬ã¹ä»£ã®èŠç©ããïŒ ãã©ã³ã¶ã¯ã·ã§ã³ãã¿ã€ã ãªãŒã«åŠçãããããã«ãé©åãªã¬ã¹äŸ¡æ Œã®èŠç©ãããååŸããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³ã¹ããŒã¿ã¹ã®ç¢ºèªïŒ ãã©ã³ã¶ã¯ã·ã§ã³ãä¿çäžããæ¿èªæžã¿ãã倱æãããã確èªããããã«ããã®ã¹ããŒã¿ã¹ãç£èŠããŸãã
äŸïŒethers.jsã䜿çšïŒïŒ
// Assuming you have a provider and signer set up
const tx = {
to: "0xRecipientAddress",
value: ethers.utils.parseEther("1.0"), // Send 1 ETH
gasLimit: 21000, // Standard gas limit for a simple transfer
gasPrice: ethers.utils.parseUnits("10", "gwei"), // Set gas price to 10 Gwei
};
signer.sendTransaction(tx)
.then((transaction) => {
console.log("Transaction hash:", transaction.hash);
// You can then track the transaction using the hash
});
2. ãããã¯ãã§ãŒã³APIã®æŽ»çš
å€ãã®ãããã¯ãã§ãŒã³ã€ã³ãã©ã¹ãã©ã¯ãã£ãããã€ããŒã¯ãã¡ã³ããŒã«ããŒã¿ãšé¢é£æ©èœãå ¬éããAPIãæäŸããŠããŸãããããã®APIã¯ãWeb3ã©ã€ãã©ãªãéããŠçŽæ¥å©çšã§ããæ å ±ããããããè©³çŽ°ãªæ å ±ãæäŸããããšãã§ããŸããããã€ãã®äŸã以äžã«ç€ºããŸãã
- ãããã¯ãšã¯ã¹ãããŒã©ãŒïŒäŸïŒEtherscan APIïŒïŒ ãããã¯ãšã¯ã¹ãããŒã©ãŒã¯ãä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³ããŒã¿ã«ã¢ã¯ã»ã¹ããããã®APIããã°ãã°æäŸããŸãããã ããã¢ã¯ã»ã¹ã¯éåžžå¶éãããŠããããAPIããŒãå¿ èŠã§ãããã¬ãŒãå¶éã®å¯Ÿè±¡ãšãªãããšããããŸãã
- å°éã®ã¡ã³ããŒã«APIïŒ äžéšã®ãµãŒãã¹ã¯ããªã¢ã«ã¿ã€ã ã®ã¡ã³ããŒã«ããŒã¿ãæäŸããããšã«ç¹åããŠããããã©ã³ã¶ã¯ã·ã§ã³ææ°æãä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³æ°ããããã¯ãŒã¯ã®æ··éç¶æ³ã«é¢ãã詳现æ å ±ãæäŸããŸããäŸãšããŠã¯ããããã¯ãã§ãŒã³ããŒã¿åæäŒæ¥ãæäŸãããµãŒãã¹ãªã©ããããŸãã
- ããŒããããã€ããŒïŒäŸïŒInfura, AlchemyïŒïŒ ãããã®ãããã€ããŒã¯ããããã¯ãã§ãŒã³ã®ç¶æ ãç §äŒã§ããAPIãæäŸããŠãããä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³ã«é¢ããããã€ãã®æŽå¯ãïŒãã°ãã°éæ¥çã«ïŒåŸãããŸãã
äŸïŒæ¶ç©ºã®ã¡ã³ããŒã«APIã䜿çšïŒïŒ
fetch('https://api.examplemempool.com/pendingTransactions')
.then(response => response.json())
.then(data => {
console.log("Pending Transactions:", data);
// Process the data to display information to the user
})
.catch(error => console.error("Error fetching pending transactions:", error));
3. ã«ã¹ã¿ã ã¡ã³ããŒã«ã¢ãã¿ãŒã®æ§ç¯
éåžžã«ç¹å®ã®ããŸãã¯ãªã¢ã«ã¿ã€ã ã®ã¡ã³ããŒã«ããŒã¿ãå¿ èŠãšããã¢ããªã±ãŒã·ã§ã³ã®å Žåãã«ã¹ã¿ã ã¡ã³ããŒã«ã¢ãã¿ãŒã®æ§ç¯ãå¿ èŠã«ãªãããšããããŸããããã«ã¯ããããã¯ãã§ãŒã³ããŒããå®è¡ããã¡ã³ããŒã«ã«å ¥ãæ°ãããã©ã³ã¶ã¯ã·ã§ã³ã«é¢é£ããã€ãã³ãã賌èªããããšãå«ãŸããŸãããããããã®ã¢ãããŒãã¯å€§å¹ ã«è€éã§ããªãœãŒã¹ã倧éã«æ¶è²»ããŸãã
ä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³ã管çããããã®ããã³ããšã³ãæŠç¥
ä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³ã广çã«ããã³ããšã³ãã§ç®¡çããããšã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããã¢ããªã±ãŒã·ã§ã³ãžã®ä¿¡é Œãç¯ããŸãã以äžã«ããã€ãã®æŠç¥ã瀺ããŸãã
1. ãªã¢ã«ã¿ã€ã ã®ãã©ã³ã¶ã¯ã·ã§ã³ã¹ããŒã¿ã¹æŽæ°ã®æäŸ
ãŠãŒã¶ãŒã¯èªåã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ç¶æ³ã«ã€ããŠç¥ãå¿ èŠããããŸãã以äžã®ãããªãªã¢ã«ã¿ã€ã ã®æŽæ°æ å ±ã衚瀺ããã·ã¹ãã ãå®è£ ããŠãã ããã
- ä¿çäžïŒ ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããã¯ãŒã¯ã«éä¿¡ãããæ¿èªãåŸ ã£ãŠããŸãã
- æ¿èªæžã¿ïŒ ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããã¯ã«å«ãŸããæçµçãªãã®ãšèŠãªãããŸãïŒç¹å®ã®ç¢ºèªåæ°ããã£ãŠïŒã
- 倱æ/åãæ¶ãïŒ ãšã©ãŒïŒäŸïŒã¬ã¹äžè¶³ãã³ã³ãã©ã¯ããšã©ãŒïŒã«ããããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã«å€±æããŸããã
ãã©ã³ã¶ã¯ã·ã§ã³ããã·ã¥ã®è¿œè·¡ãšã€ãã³ããªã¹ããŒãçµã¿åãããŠãæ£ç¢ºãªã¹ããŒã¿ã¹æŽæ°ãæäŸããŸããWeb3ã©ã€ãã©ãªã¯ããã©ã³ã¶ã¯ã·ã§ã³æ¿èªã€ãã³ãã賌èªããããã®ã¡ãœãããæäŸããŠããŸãã
äŸïŒ
// Using ethers.js to wait for transaction confirmations
provider.waitForTransaction(transactionHash, confirmations = 1)
.then((receipt) => {
console.log("Transaction confirmed after", receipt.confirmations, "confirmations");
// Update the UI to reflect the successful transaction
})
.catch((error) => {
console.error("Transaction failed:", error);
// Update the UI to reflect the failed transaction
});
2. é©åãªã¬ã¹ä»£ã®èŠç©ãããšææ¡
ã¬ã¹ä»£ã¯ãããã¯ãŒã¯ã®æ··éç¶æ³ã«ãã£ãŠå€§å¹ ã«å€åããå¯èœæ§ããããŸãããŠãŒã¶ãŒã«ãªã¢ã«ã¿ã€ã ã®ã¬ã¹äŸ¡æ Œã®èŠç©ãããæäŸãããã©ã³ã¶ã¯ã·ã§ã³ãã¿ã€ã ãªãŒã«åŠçãããããã«é©åãªã¬ã¹ä»£ãææ¡ããŸããããã€ãã®ãµãŒãã¹ãã¬ã¹äŸ¡æ Œãææ°æã®èŠç©ãããæäŸããŠããããã°ãã°ãé«éããæšæºããäœéãã«åé¡ãããŸãããããã®ãªãã·ã§ã³ãæç¢ºãªèª¬æãšãšãã«ãŠãŒã¶ãŒã«è¡šç€ºããŠãã ããã
èæ ®äºé ïŒ
- ä¿¡é Œã§ããã¬ã¹äŸ¡æ ŒãŸãã¯ææ°æãªã©ã¯ã«ã®äœ¿çšïŒ EthGasStationïŒå©çšå¯èœãªå ŽåïŒãããŒããããã€ããŒïŒInfuraãAlchemyïŒã®APIãªã©ãè©å€ã®è¯ãã¬ã¹äŸ¡æ ŒãŸãã¯ææ°æãªã©ã¯ã«ãšçµ±åããŠãææ°ã®æ å ±ãååŸããŸãã
- åçãªææ°æèª¿æŽïŒ ãŠãŒã¶ãŒãæåã§ã¬ã¹ä»£ã調æŽã§ããããã«ããŸãããææ°æãäœãããå Žåã®é å»¶ããã©ã³ã¶ã¯ã·ã§ã³å€±æã®å¯èœæ§ã«ã€ããŠèŠåã衚瀺ããŸãã
- EIP-1559ã®ãµããŒãïŒ EIP-1559ããµããŒããããããã¯ãŒã¯ïŒã€ãŒãµãªã¢ã ãªã©ïŒã§ã¯ããŠãŒã¶ãŒã`maxFeePerGas`ãš`maxPriorityFeePerGas`ã®äž¡æ¹ãèšå®ã§ãããªãã·ã§ã³ãæäŸããŸãã
3. ãã©ã³ã¶ã¯ã·ã§ã³ã®ãã£ã³ã»ã«ãŸãã¯çœ®ãæãã®èš±å¯
ç¹å®ã®ç¶æ³ã§ã¯ããŠãŒã¶ãŒã¯ä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³ããã£ã³ã»ã«ãŸãã¯çœ®ãæãããå ŽåããããŸããããã¯ç¹ã«ãã¬ã¹ä»£ãäœãããããã¯ãŒã¯ãæ··éããŠããããã«ãã©ã³ã¶ã¯ã·ã§ã³ãã¡ã³ããŒã«ã§åæ»ããŠããå Žåã«åœãŠã¯ãŸããŸããã»ãšãã©ã®ãããã¯ãã§ãŒã³ã§ã¯ãåããã³ã¹ïŒnonceïŒãããé«ãã¬ã¹ä»£ã§äœ¿çšããŠãã©ã³ã¶ã¯ã·ã§ã³ã眮ãæããããšãã§ããŸããããã«ãããå ã®ãã©ã³ã¶ã¯ã·ã§ã³ããã£ã³ã»ã«ãããæ°ãããã©ã³ã¶ã¯ã·ã§ã³ã«çœ®ãæããããŸãã
å®è£ ïŒ
- ãã³ã¹ç®¡çïŒ ãã©ã³ã¶ã¯ã·ã§ã³ã®è¡çªãé²ãããã«ãããã³ããšã³ãã§é©åãªãã³ã¹ç®¡çã培åºããŸãããã³ã¹ã¯æ°ãããã©ã³ã¶ã¯ã·ã§ã³ããšã«ã€ã³ã¯ãªã¡ã³ããããã¹ãã§ãã
- ãã©ã³ã¶ã¯ã·ã§ã³ã®çœ®ãæãïŒ ãŠãŒã¶ãŒãåããã³ã¹ã䜿çšããŠãããé«ãã¬ã¹ä»£ã§åããã©ã³ã¶ã¯ã·ã§ã³ãåéä¿¡ã§ããããã«ããŸããããã«ããå ã®ãã©ã³ã¶ã¯ã·ã§ã³ã眮ãæããããããšããŠãŒã¶ãŒã«æç¢ºã«èª¬æããŸãã
- ãã£ã³ã»ã«ïŒå¯èœãªå ŽåïŒïŒ äžéšã®ã¹ããŒãã³ã³ãã©ã¯ãã¯ãã£ã³ã»ã«ã¡ã«ããºã ãèš±å¯ããŠããŸããã¹ããŒãã³ã³ãã©ã¯ããããããµããŒãããŠããå Žåã¯ããŠãŒã¶ãŒãä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³ããã£ã³ã»ã«ããæ¹æ³ãæäŸããŸãã
éèŠäºé ïŒ ãã©ã³ã¶ã¯ã·ã§ã³ã®çœ®ãæãã¯ãç¹ã«ãããã¯ãŒã¯ãæ¥µç«¯ã«æ··éããŠããæéäžã¯ãå¿ ãããæåãããšã¯éããŸããã眮ãæããã©ã³ã¶ã¯ã·ã§ã³ããå ã«ãã€ããŒãå ã®ãã©ã³ã¶ã¯ã·ã§ã³ãå«ããå Žåãå ã®ãã©ã³ã¶ã¯ã·ã§ã³ãåŠçãããå¯èœæ§ããããŸãã
4. ãã©ã³ã¶ã¯ã·ã§ã³å€±æã®äžå¯§ãªåŠç
ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãè³éäžè¶³ãã³ã³ãã©ã¯ããšã©ãŒãç¡å¹ãªãã©ã¡ãŒã¿ãªã©ãããŸããŸãªçç±ã§å€±æããå¯èœæ§ããããŸããããã³ããšã³ãã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®å€±æãäžå¯§ã«åŠçãããŠãŒã¶ãŒã«æçãªãšã©ãŒã¡ãã»ãŒãžãæäŸããå¿ èŠããããŸãã
ãã¹ããã©ã¯ãã£ã¹ïŒ
- ãšã©ãŒã®ãã£ããïŒ ãã©ã³ã¶ã¯ã·ã§ã³ã®éä¿¡ããã³ç¢ºèªäžã®ãšã©ãŒãåŠçããããã«`try...catch`ãããã¯ã䜿çšããŸãã
- æçãªã¡ãã»ãŒãžã®è¡šç€ºïŒ 倱æã®çç±ã説æããæç¢ºã§ç°¡æœãªãšã©ãŒã¡ãã»ãŒãžãæäŸããŸããããã©ã³ã¶ã¯ã·ã§ã³ã«å€±æããŸãããã®ãããªäžè¬çãªãšã©ãŒã¡ãã»ãŒãžã¯é¿ããŠãã ããã
- 解決çã®ææ¡ïŒ ã¬ã¹ãªãããã®åŒãäžããã³ã³ãã©ã¯ããã©ã¡ãŒã¿ã®ç¢ºèªãªã©ããšã©ãŒã解決ããããã®ææ¡ãæç€ºããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³ãã°ïŒ å¯èœã§ããã°ãããæè¡çãªãŠãŒã¶ãŒã®ããã«ããã©ã³ã¶ã¯ã·ã§ã³ãã°ããã³ãŒãããããšã©ãŒã¡ãã»ãŒãžãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã
5. ãªããã£ãã¹ãã£ãã¯UIæŽæ°
äœæããã©ãŒãã³ã¹ãåäžãããããã«ããªããã£ãã¹ãã£ãã¯UIæŽæ°ã®äœ¿çšãæ€èšããŠãã ãããããã¯ããã©ã³ã¶ã¯ã·ã§ã³ããããã¯ãã§ãŒã³ã§ç¢ºèªãããåã§ãã£ãŠããæåãããã®ããã«UIãæŽæ°ããããšãæå³ããŸãããã®åŸãã©ã³ã¶ã¯ã·ã§ã³ã倱æããå Žåã¯ãUIã®å€æŽãå ã«æ»ãããšã©ãŒã¡ãã»ãŒãžã衚瀺ããŸãã
å©ç¹ïŒ
- ããéããã£ãŒãããã¯ïŒ ãŠãŒã¶ãŒã«å³åº§ã«ãã£ãŒãããã¯ãæäŸããã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ãé«ããŸãã
- æ¹åããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒ äœæçãªé å»¶ãæžãããããã¹ã ãŒãºãªã€ã³ã¿ã©ã¯ã·ã§ã³ãããŒãäœãåºããŸãã
èæ ®äºé ïŒ
- ãšã©ãŒãã³ããªã³ã°ïŒ ãã©ã³ã¶ã¯ã·ã§ã³ã倱æããå Žåã«UIã®å€æŽãå ã«æ»ãããã®å ç¢ãªãšã©ãŒãã³ããªã³ã°ãå®è£ ããŸãã
- èŠèŠçãªåå³ïŒ UIã®æŽæ°ããªããã£ãã¹ãã£ãã¯ã§ãããæçµçãªãã®ã§ã¯ãªãå¯èœæ§ãããããšã瀺ãèŠèŠçãªåå³ã䜿çšããŸãã
- å ã«æ»ãæ©èœïŒ ãã©ã³ã¶ã¯ã·ã§ã³ã倱æããå Žåã«ããŠãŒã¶ãŒããªããã£ãã¹ãã£ãã¯ãªUIã®å€æŽãå ã«æ»ãæ¹æ³ãæäŸããŸãã
ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
ããã³ããšã³ãã§ä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³ã管çããéã«ã¯ãã»ãã¥ãªãã£ãæéèŠã§ãã以äžã«éèŠãªã»ãã¥ãªãã£ã«é¢ããèæ ®äºé ãããã€ã瀺ããŸãã
1. å®å šãªéµç®¡ç
ãã©ã³ã¶ã¯ã·ã§ã³ã«çœ²åããããã«äœ¿çšãããç§å¯éµã¯ãæãéèŠãªè³ç£ã§ããç§å¯éµãããã³ããšã³ãã®ã³ãŒããããŒã«ã«ã¹ãã¬ãŒãžã«çŽæ¥ä¿åããªãã§ãã ãããæ¬¡ã®ãããªå®å šãªéµç®¡çãœãªã¥ãŒã·ã§ã³ã䜿çšããŠãã ããã
- ãã©ãŠã¶æ¡åŒµæ©èœïŒäŸïŒMetaMaskïŒïŒ ãŠãŒã¶ãŒããã©ãŠã¶æ¡åŒµæ©èœå ã§å®å šã«éµã管çã§ããããã«ããŸãã
- ããŒããŠã§ã¢ãŠã©ã¬ããïŒäŸïŒLedger, TrezorïŒïŒ ããŒããŠã§ã¢ãŠã©ã¬ãããšçµ±åãããŠãŒã¶ãŒãç§å¯éµãã¢ããªã±ãŒã·ã§ã³ã«å ¬éããããšãªããã©ã³ã¶ã¯ã·ã§ã³ã«çœ²åã§ããããã«ããŸãã
- WalletConnectïŒ WalletConnectã䜿çšããŠããŠãŒã¶ãŒãã¢ãã€ã«ãŠã©ã¬ãããã¢ããªã±ãŒã·ã§ã³ã«å®å šã«æ¥ç¶ã§ããããã«ããŸãã
2. ãªãã¬ã€æ»æã®é²æ¢
ãªãã¬ã€æ»æã¯ãçœ²åæžã¿ã®ãã©ã³ã¶ã¯ã·ã§ã³ãåãããŒããã£ã¹ãããŠè€æ°åå®è¡ããããšã§ãã以äžã®æ¹æ³ã§ãªãã¬ã€æ»æããä¿è·ããŸãã
- äžæã®ãã³ã¹ã®äœ¿çšïŒ åãã©ã³ã¶ã¯ã·ã§ã³ã«äžæã®ãã³ã¹ãããããšã確èªããŸãã
- ãã§ãŒã³IDïŒ ç°ãªããã§ãŒã³éã§ã®ãªãã¬ã€æ»æãé²ãããã«ããã§ãŒã³IDããã©ã³ã¶ã¯ã·ã§ã³ããŒã¿ã«å«ããŸãïŒEIP-155ã§èŠå®ïŒã
3. ãŠãŒã¶ãŒå ¥åã®æ€èšŒ
æªæã®ããè ãæå®³ãªã³ãŒããæ³šå ¥ãããããã©ã³ã¶ã¯ã·ã§ã³ãã©ã¡ãŒã¿ãæäœãããããã®ãé²ãããã«ããã¹ãŠã®ãŠãŒã¶ãŒå ¥åã培åºçã«æ€èšŒããŸããããã«ã¯ãã¢ãã¬ã¹ãéé¡ãã¬ã¹ãªãããããã®ä»ã®é¢é£ããŒã¿ã®æ€èšŒãå«ãŸããŸãã
4. äžéè æ»æããã®ä¿è·
ããã³ããšã³ããšããã¯ãšã³ãéã®ãã¹ãŠã®éä¿¡ãæå·åããããã«HTTPSã䜿çšãããã©ã³ã¶ã¯ã·ã§ã³ããŒã¿ãå±éºã«ãããå¯èœæ§ã®ããäžéè æ»æãé²ããŸãã
5. ç£æ»ãšãã¹ã
æœåšçãªã»ãã¥ãªãã£è匱æ§ãç¹å®ãã察åŠããããã«ãããã³ããšã³ãã®ã³ãŒãã宿çã«ç£æ»ããã³ãã¹ãããŸããå æ¬çãªã»ãã¥ãªãã£ã¬ãã¥ãŒã宿œããããã«ãã»ãã¥ãªãã£äŒç€Ÿã«äŸé Œããããšãæ€èšããŠãã ããã
åœéåïŒi18nïŒãšå°ååïŒl10nïŒã«é¢ããèæ ®äºé
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã®ããã³ããšã³ããéçºããéã«ã¯ãåœéåïŒi18nïŒãšå°ååïŒl10nïŒãèæ ®ããããšãäžå¯æ¬ ã§ããããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãç°ãªãèšèªãæåãå°åã®å¥œã¿ã«é©å¿ãããããšãå«ãŸããŸãã
1. èšèªãµããŒã
è€æ°ã®èšèªããµããŒããããŠãŒã¶ãŒã奜ã¿ã®èšèªã«åãæ¿ããããããã«ããŸãã`i18next`ã`react-intl`ã®ãããªi18nã©ã€ãã©ãªã䜿çšããŠã翻蚳ãšå°ååããŒã¿ã管çããŸãã
2. é貚ã®ãã©ãŒããã
é貚é¡ããŠãŒã¶ãŒã®å°åã®é貚圢åŒã§è¡šç€ºããŸãã`Intl.NumberFormat`ã®ãããªã©ã€ãã©ãªã䜿çšããŠããŠãŒã¶ãŒã®ãã±ãŒã«ã«åŸã£ãŠæ°å€ãšé貚ããã©ãŒãããããŸãã
3. æ¥ä»ãšæå»ã®ãã©ãŒããã
ãŠãŒã¶ãŒã®å°åã®æ £ç¿ã«åŸã£ãŠæ¥ä»ãšæå»ããã©ãŒãããããŸãã`Intl.DateTimeFormat`ã®ãããªã©ã€ãã©ãªã䜿çšããŠããŠãŒã¶ãŒã®ãã±ãŒã«ã«åºã¥ããŠæ¥ä»ãšæå»ããã©ãŒãããããŸãã
4. æ°å€ã®ãã©ãŒããã
å°åããšã«é©åãªæ°å€ãã©ãŒãããã®æ £ç¿ã䜿çšããŸããäŸãã°ãäžéšã®å°åã§ã¯å°æ°ç¹ã®åºåãæåãšããŠã³ã³ãã䜿çšããŸãããä»ã®å°åã§ã¯ããªãªãã䜿çšããŸãã
5. å³ããå·ŠïŒRTLïŒãžã®ãµããŒã
å³ããå·Šã«æžãããèšèªïŒäŸïŒã¢ã©ãã¢èªãããã©ã€èªïŒã®å Žåãããã³ããšã³ãã®ã¬ã€ã¢ãŠããRTLã®ããã¹ãæ¹åã«åãããŠé©åã«ãã©ãŒãªã³ã°ãããŠããããšã確èªããŠãã ããã
ããã©ãŒãã³ã¹ã®æé©å
ããã³ããšã³ãã®ããã©ãŒãã³ã¹ã¯ããŠãŒã¶ãŒæºè¶³åºŠã«ãšã£ãŠéåžžã«éèŠã§ããä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³ã管çããéã«ããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åããããã®ããã€ãã®ãã³ãã以äžã«ç€ºããŸãã
1. ã³ãŒãåå²
ã³ãŒããããå°ããªãã£ã³ã¯ã«åå²ãããªã³ããã³ãã§ããŒãã§ããããã«ããŸããããã«ãããåæããŒãæéãççž®ãããã¢ããªã±ãŒã·ã§ã³å šäœã®ããã©ãŒãã³ã¹ãåäžããŸããWebpackãParcelã®ãããªããŒã«ã䜿çšããŠã³ãŒãåå²ãå®è£ ããŸãã
2. é å»¶èªã¿èŸŒã¿
ãªãœãŒã¹ïŒäŸïŒç»åãã³ã³ããŒãã³ãïŒãå¿ èŠãªãšãã«ã®ã¿ããŒãããŸããããã«ãããåæããŒãæéãççž®ãããã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ãåäžããŸããé å»¶èªã¿èŸŒã¿ãåçã€ã³ããŒãã®ãããªæè¡ã䜿çšããŸãã
3. ãã£ãã·ã³ã°
é »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ããã£ãã·ã¥ããŠãããã¯ãšã³ããžã®ãªã¯ãšã¹ãæ°ãæžãããŸãããã©ãŠã¶ã®ãã£ãã·ã³ã°ããµãŒãã¹ã¯ãŒã«ãŒã䜿çšããŠãéçã¢ã»ãããAPIã¬ã¹ãã³ã¹ããã£ãã·ã¥ããŸãã
4. minifyïŒæå°åïŒãšå§çž®
ã³ãŒããæå°åããã³å§çž®ããŠããã¡ã€ã«ãµã€ãºãåæžããããŒãé床ãåäžãããŸããUglifyJSãTerserã®ãããªããŒã«ã䜿çšããŠã³ãŒããæå°åããGzipãBrotliã䜿çšããŠãã¡ã€ã«ãå§çž®ããŸãã
5. ç»åã®æé©å
å質ãæãªãããšãªããã¡ã€ã«ãµã€ãºãåæžããããã«ç»åãæé©åããŸããImageOptimãTinyPNGã®ãããªããŒã«ã䜿çšããŠç»åãå§çž®ãããã®ãã©ãŒããããæé©åããŸãã
çµè«
ããã³ããšã³ãã§ä¿çäžã®ãã©ã³ã¶ã¯ã·ã§ã³ã广çã«ç®¡çããããšã¯ããŠãŒã¶ãŒãã¬ã³ããªãŒã§ä¿¡é Œæ§ã®é«ãdAppãäœæããããã«äžå¯æ¬ ã§ãããã©ã³ã¶ã¯ã·ã§ã³ããŒã«ã®è€éããçè§£ããé©åãªããã³ããšã³ãæŠç¥ã掻çšããã»ãã¥ãªãã£ãåªå ããããšã§ãéçºè ã¯ã·ãŒã ã¬ã¹ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸããããã«ãåœéåãšããã©ãŒãã³ã¹ã®æé©åãèæ ®ããããšã§ãã¢ããªã±ãŒã·ã§ã³ãäžçäžã®ãŠãŒã¶ãŒã«ãšã£ãŠã¢ã¯ã»ã¹ãããããããã©ãŒãã³ã¹ãé«ããã®ã«ãªãããšãä¿èšŒãããŸãããããã¯ãã§ãŒã³ãšã³ã·ã¹ãã ãé²åãç¶ããäžã§ãææ°ã®ãã¹ããã©ã¯ãã£ã¹ãšãã¯ãããžãŒã«ã€ããŠåžžã«æ å ±ãåŸãããšããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã®ããŒãºãæºããæå 端ã®dAppãæ§ç¯ããããã«äžå¯æ¬ ãšãªããŸãã