Skip to content

go-ethereum source code analyzation under the perspective of smart contract security

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
COPYING
Notifications You must be signed in to change notification settings

learnerLj/geth-analyze

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Go Ethereum Analyze

ๆœฌไป“ๅบ“ไธป่ฆ้ขๅ‘้œ€่ฆ้˜…่ฏปไปฅๅคชๅŠๆบ็ ็š„่ฏป่€…๏ผŒๆš‚ๆ—ถๅชๅ…ณๆณจ็ ”็ฉถๆ™บ่ƒฝๅˆ็บฆๅฎ‰ๅ…จๅฟ…้œ€็š„ๅˆ็บฆๆ‰ง่กŒๆœบๅˆถใ€‚็ฝ‘็ปœๅ’Œๅ…ฑ่ฏ†้ƒจๅˆ†ไนŸๆฌข่ฟŽๆœ‹ๅ‹่กฅๅ……ใ€‚

ๆœฌไป“ๅบ“ๅคๅˆถๅฎ˜ๆ–น็š„ go-ethereum๏ผŒๅช่ฟ›่กŒ่งฃ่ฏป๏ผŒไธๅšๅฎž้™…ๆบ็ ไฟฎๆ”น๏ผŒไพ›ๅคงๅฎถๅญฆไน ไบคๆต๏ผŒ่ฏทๅ‹ฟ็”จไบŽ็”Ÿไบง็Žฏๅขƒใ€‚ๆฌข่ฟŽไบคๆตๅญฆไน ๏ผ

ไธป่ฆ็›ฎๆ ‡๏ผš

  • ๆทฑๅบฆ็†่งฃไปฅๅคชๅŠๅบ•ๅฑ‚่ฟ่กŒๆœบๅˆถ
  • ๆทฑๅบฆ็†่งฃไปฅๅคชๅŠๅญ—่Š‚็ ๏ผŒ่ƒฝๅคŸๅฏนๅญ—่Š‚็ ่ฟ›่กŒๅฎ‰ๅ…จๅˆ†ๆžใ€‚
  • ๆไพ›ไฟฎๆ”นๆบ็ ็š„ๅ‚่€ƒ๏ผŒ่ƒฝๅคŸไฟฎๆ”นๆบ็ ไปฅๅฎŒๆˆๆต‹่ฏ•ใ€ๆ’ๆกฉ๏ผŒ็”š่‡ณๆ–ฐๅปบ่‡ชๅทฑ็š„้“พใ€‚
  • ๆไพ›ไบคๆ˜“ๅŠจๆ€ๆ•ฐๆฎๅˆ†ๆžๆ–นๆณ•๏ผŒๆœ€็ปˆๅฎž็ŽฐๅŒบๅ—้“พๅนณๅฐๅจ่ƒๆ„Ÿ็Ÿฅๅ’Œๆ”ปๅ‡ปๆฃ€ๆต‹็š„ๆจกๅž‹ใ€‚

ๆณจๆ„๏ผš

  • ๅช่งฃ้‡Š้ƒจๅˆ†็ป†่Š‚๏ผŒๆบ็ ๆณจ้‡Šไธญไธไฝœ่ฟ‡ไบŽ่ฏฆ็ป†็š„ไป‹็ป๏ผŒๅชๆๅŠๆ‰€้œ€็š„ๅŸบ็ก€ๅ’Œๅญฆไน ็š„ๆ–นๅ‘ใ€‚
  • ๅฏนๅบ”็š„็†่ฎบๅŸบ็ก€ๅ’Œๆบ็ ๆขณ็†ๅญ˜ๆ”พๅœจ analyzeSourceCode ๆ–‡ไปถๅคนๅ†…๏ผŒ้’ˆๅฏนๅฏนๅบ”็š„ๅ†…ๅฎน๏ผŒๆขณ็†่„‰็ปœๅ’Œๅฎž็Žฐๆต็จ‹ใ€‚
  • ไฟ็•™ไบ†่‹ฑๆ–‡ๆณจ้‡Š๏ผŒๅฏนไบŽๅฎนๆ˜“็†่งฃ็š„่‹ฑๆ–‡ๆณจ้‡Šๅนถๆœช็ฟป่ฏ‘ๆˆไธญๆ–‡ใ€‚

ๅทฒๅฎŒๆˆ็š„ๆบ็ ่งฃๆžๅˆ—่กจ

  • contracts ๅŒ…
  • core/forkchoice.go
  • core/types ๅŒ…
  • core/bloombits ๅŒ…(ๅŒน้…ๅ™จ้ƒจๅˆ†็”ฑไบŽ็ผบๅฐ‘ๅนถๅ‘ๆจกๅž‹็Ÿฅ่ฏ†๏ผŒๆš‚็ผ“)
  • core/genesis.go
  • core/tx_pool.go
  • core/tx_list.go
  • core/tx_cacher.go
  • core/tx_journal.go
  • core/tx_noncer.go
  • core/forkid ๅŒ…
  • core/blocks.go
  • trieๅŒ…MPTๅˆ†ๆž

ๅทฒๅฎŒๆˆ็š„็†่ฎบๅŸบ็ก€ๅˆ—่กจ

  • ๅŒบๅ—้“พๅŸบ็ก€ๅ…ฅ้—จ
  • ๅˆ็บฆๅฎ‰ๅ…จๅˆ†ๆžไน‹็จ‹ๅบๅˆ†ๆžๅŸบ็ก€
  • ๅญฆไน ่ทฏ็บฟๅ’Œ่ต„ๆบๆฑ‡ๆ€ป
  • ๅˆๆญฅ็†่งฃ EVM ็š„ stackใ€memoryใ€storageใ€calldata
  • ไปฅๅคชๅŠ้ป„็šฎไนฆไธญ EVM ่ฎพ่ฎกๆ€่ทฏ่งฃ่ฏป
  • ๅˆ็บฆๅฎก่ฎกๅทฅๅ…ท่ฏดๆ˜Žๅ’Œไฝฟ็”จ
  • ไปฅๅคชๅŠๆ ธๅฟƒๆ•ฐๆฎ็ป“ๆž„ๆ–‡็ซ 
  • ๅฎŒๅ–„ไปฅๅคชๅŠๆžถๆž„ๅ›พ
  • ๆทฑๅ…ฅๅˆ็บฆๅญ—่Š‚็ ๅˆ†ๆž

Todo list:

  • ๅˆ็บฆๅฎ‰ๅ…จๅˆ†ๆžไน‹ๆŠฝ่ฑก
  • core/vm ๅŒ…
  • core/txpool.go้˜…่ฏป็ฌ”่ฎฐ
  • core/blockchain.go
  • core/stateๅŒ…
  • core/state_transition.go

็Žฏๅขƒๅ‡†ๅค‡

ไธบไบ†ๆ–นไพฟไฟฎๆ”นๆบ็ ๅŽ่ฟ›่กŒ่ฐƒ่ฏ•๏ผŒๅปบ่ฎฎๅœจ Linux ็ณป็ปŸ่ฟ่กŒ๏ผŒ้˜…่ฏปๆบ็ ๆ—ถ็”จไธปๆœบ็ณป็ปŸๅฏ่ƒฝ็›ธๅฏนๆ–นไพฟใ€‚

ๅฎ‰่ฃ…่™šๆ‹Ÿๆœบ๏ผšๅปบ่ฎฎ Ubuntu20.04๏ผŒๅ…ทไฝ“ๅฎ‰่ฃ…ๆ•™็จ‹ๅฏ่งๅ…ถไป–ๆ•™็จ‹ใ€‚ๅธŒๆœ›่ฏป่€…ๆœ‰ไธ€ๅฎš็š„ Linux ๅŸบ็ก€๏ผŒ็†Ÿๆ‚‰ๅธธ็”จๅ‘ฝไปค๏ผŒ็†่งฃ Linux ้…็ฝฎๆ–‡ไปถ็š„ๆ€ๆƒณ๏ผŒไผš้˜…่ฏปๅ‘ฝไปค่กŒๆ็คบไฟกๆฏใ€‚ๅฎ‰่ฃ…ๅฅฝ่™šๆ‹ŸๆœบๅŽๅฏ่ฎพ็ฝฎไปฃ็†๏ผˆๅญฆไน ๅŒบๅ—้“พๅฟ…้กป่ฆๅญฆไผš่ฎพ็ฝฎไปฃ็†๏ผ‰๏ผŒ่‡ช่กŒๅฏปๆ‰พๆ•™็จ‹ใ€‚

ๅ‡†ๅค‡็Žฏๅขƒ๏ผšๅฎ‰่ฃ… nodejsใ€npmใ€golandใ€typoraใ€ไธญๆ–‡่พ“ๅ…ฅๆณ•๏ผˆๅฏไปฅ็”จ็™พๅบฆ่พ“ๅ…ฅๆณ•๏ผ‰ใ€vscodeใ€golandใ€git๏ผŒๆ–ฐๆ‰‹่‡ช่กŒๅฏปๆ‰พๆ•™็จ‹๏ผŒๅพˆๅฎนๆ˜“ๆ‰พๅˆฐใ€‚

ๅปบ่ฎฎไฝฟ็”จ godoc๏ผŒ็„ถๅŽ่พ“ๅ…ฅๅ‘ฝไปค godoc --http localhost:6060๏ผŒๅฏไปฅๆ–นไพฟๅœฐ็œ‹ๅˆฐ่‡ชๅŠจ็”Ÿๆˆ็š„ๆ–‡ๆกฃใ€‚

้…็ฝฎgo็ผ–่ฏ‘ๅ™จ๏ผšubuntu aptๅŒ…็ฎก็†ๅทฅๅ…ท็š„go็ผ–่ฏ‘ๅ™จ็‰ˆๆœฌๅคชไฝŽ๏ผŒ้œ€่ฆๆ‰‹ๅŠจๅ‡็บงใ€‚

  1. ไธ‹่ฝฝไบŒ่ฟ›ๅˆถๅŒ…๏ผŒๅฏๅœจ่ฟ™้‡Œไธ‹่ฝฝ๏ผŒ็„ถๅŽ่งฃๅŽ‹ใ€ๅคๅˆถๅˆฐ /usr/local๏ผŒ่ฟ™ๆ˜ฏๆˆ‘ไปฌไธ€่ˆฌๆ”พ่ฝฏไปถ็š„ๅœฐๆ–น๏ผŒ็„ถๅŽ่ฎพ็ฝฎ็Žฏๅขƒๅ˜้‡๏ผŒๅปบ่ฎฎๅญฆไน  Linux ็š„็Žฏๅขƒๅ˜้‡ๅฆ‚ไฝ•่ฎพ็ฝฎ๏ผŒๆœ‰ไป€ไนˆไฝœ็”จใ€‚่ฟ™ไธช็›ฎๅฝ•ๅฐฑๆ˜ฏ GOROOT ็›ฎๅฝ•๏ผŒGOPATH ็›ฎๅฝ•ๅฏไปฅ้€š่ฟ‡ go env ๆ‰พๅˆฐใ€‚

  2. ไธ‹่ฝฝ go-ethereum๏ผŒๅปบ่ฎฎไฝฟ็”จ apt ไธ‹่ฝฝ๏ผŒๅ› ไธบไธ็”จ้ขๅค–็š„้…็ฝฎ๏ผŒๅนถไธ”้™„ๅธฆไบ†ไธ€ไบ›ๅฅฝ็”จ็š„ๅทฅๅ…ทใ€‚

    ๆทปๅŠ ๆบ๏ผšsudo add-apt-repository -y ppa:ethereum/ethereum

    ๆ›ดๆ–ฐ่ฝฏไปถ่กจ๏ผšsudo apt-get update

    ๅฎ‰่ฃ…็จณๅฎš็‰ˆ๏ผšsudo apt-get install ethereum

    ้‡่ง้—ฎ้ข˜ๅ‚่€ƒ ๅฎ˜ๆ–นๆ•™็จ‹ ๅ’Œๅšๅฎขใ€‚ๆณจๆ„ๅฆ‚ๆžœๆœช่ฎพ็ฝฎไปฃ็†๏ผŒไธ‹่ฝฝ้€Ÿๅบฆไผšๅพˆๆ…ข๏ผŒ่€ๅฟƒ็ญ‰ๅพ…ใ€‚ๅ…ณไบŽๅฆ‚ไฝ•่ฎพ็ฝฎไปฃ็†๏ผŒ่ฏท่‡ช่กŒๆŸฅๆ‰พๆ•™็จ‹ใ€‚

  3. ๅ…‹้š†ไป“ๅบ“๏ผŒๅผ€ๅง‹ๅทฅไฝœใ€‚้…็ฝฎๅฅฝ่‡ชๅทฑ็š„ Git๏ผŒไธไผšไฝฟ็”จ่ฏท่‡ช่กŒๅฏปๆ‰พๆ•™็จ‹ใ€‚็„ถๅŽ VSCodeใ€goland ้…็ฝฎๅฅฝ็›ธๅ…ณ็Žฏๅขƒ๏ผˆ่‡ช่กŒๅฏปๆ‰พๆ•™็จ‹๏ผ‰

  4. ๅฎ‰่ฃ…็ฟป่ฏ‘ๆ’ไปถ๏ผŒ่พ…ๅŠฉ้˜…่ฏป่‹ฑๆ–‡ๆณจ้‡Š๏ผŒๆŽจ่ JetBrain ็ณป็š„ Transaction ๅ’Œ VSCode ็š„ Comment Translateใ€‚


่ฏทๆณจๆ„๏ผšไป“ๅบ“ๅŸบไบŽ่พƒๆ–ฐ็š„ geth ๆบ็ ๏ผŒๆœฌๆ•™็จ‹ๅ’Œๆบ็ ้ƒฝๅช็”จไบŽๅญฆไน ๏ผŒๅนถไธ”ๅช่ดŸ่ดฃ่งฃ่ฏปไปฅๅŠๅฆ‚ไฝ•ไฟฎๆ”น๏ผŒไธไผšๅšๅฎž่ดจๆ€ง็š„ๆ”นๅ˜

ไปฅๅคชๅŠๆœฏ่ฏญ

ๅœจๅผ€ๅง‹่งฃ่ฏปไปฅๅคชๅŠๅ‰๏ผŒๅ…ˆไบ†่งฃไปฅๅคชๅŠไธญๅธธ่งๆœฏ่ฏญๅ’Œๅ่ฏใ€‚ไปฅไพฟๆ›ดๅฅฝ็š„ๅญฆไน ๅŽ็ปญๅ†…ๅฎนใ€‚ๅคง้ƒจๅˆ†ๅ†…ๅฎนๆฅ่‡ช ๅšๅฎข๏ผŒๆœฌไบบ่กฅๅ……ๅ’ŒๅฎŒๅ–„ใ€‚

ไธ“ๆœ‰ๅ่ฏ

  • ๅค–้ƒจ่ดฆๆˆท๏ผšEOAs๏ผˆExternal Owned Accounts๏ผ‰๏ผŒๅ…ณ่”ไธชไบบๆŽŒๆก็š„็ง้’ฅใ€‚ๅฏไปฅ็”จไบŽๅ‘้€ไบคๆ˜“๏ผˆ่ฝฌ็งปไปฅๅคชๅธๆˆ–ๅ‘้€ๆถˆๆฏ๏ผ‰๏ผŒๅฝขๅŒไธ€ๅผ ๅธฆๆ•ฐๅญ—ID็š„ๅ‚จ่“„ๅกใ€‚
  • ๅˆ็บฆ่ดฆๆˆท๏ผšContracts Accounts๏ผŒๅฏไปฅๅœจไปฅๅคชๅŠไธŠๅญ˜ๅ‚จๅˆ็บฆไปฃ็ ไธŽๅˆ็บฆๆ•ฐๆฎ็š„่ดฆๆˆท๏ผŒๅค–้ƒจไธ่ƒฝ็›ดๆŽฅๆ“ไฝœๆญค่ดฆๆˆทใ€‚ๅช่ƒฝ็”ฑๅค–้ƒจ่ดฆๆˆท็›ดๆŽฅๆˆ–้—ดๆŽฅ่ฐƒ็”จใ€‚
  • ่ดฆๆˆท็Šถๆ€๏ผš account state๏ผŒ่กจ็คบไธ€ไธช่ดฆๆˆทๅœจไปฅๅคชๅŠไธญ็š„็Šถๆ€ใ€‚่ดฆๆˆท็Šถๆ€ๅœจ่ดฆๆˆทๆ•ฐๆฎๅ˜ๅŒ–ๆ—ถๅ˜ๅŒ–ใ€‚่ดฆๆˆท็Šถๆ€ๅŒ…ๅซๅ››้กนไฟกๆฏ๏ผšnonceใ€ไฝ™้ขใ€่ดฆๆˆทๅญ˜ๅ‚จๅ†…ๅฎนๆ นๅ“ˆๅธŒๅ€ผใ€่ดฆๆˆทไปฃ็ ๅ“ˆๅธŒๅ€ผใ€‚็Šถๆ€ๆ•ฐๆฎไธ็›ดๆŽฅๅญ˜ๅ‚จๅœจๅŒบๅ—ไธŠใ€‚
  • ่ดฆๆˆท Nonce: ่ดฆๆˆท้šๆœบๆ•ฐ๏ผŒๆ˜ฏ่ดฆๆˆท็š„ไบคๆ˜“่ฎกๆ•ฐใ€‚ไปฅ้˜ฒๆญข้‡ๆ”พๆ”ปๅ‡ปใ€‚
  • ๆ™บ่ƒฝๅˆ็บฆ๏ผšSmart Contract๏ผŒๆ˜ฏไปฅๅคชๅŠๆˆไธบๅŒบๅ—้“พ2.0็š„็ซ‹่ถณ็‚นใ€‚ไปฅๅคชๅŠๆ”ฏๆŒ้€š่ฟ‡ๅ›พ็ตๅฎŒๅค‡็š„้ซ˜็บง็ผ–็จ‹่ฏญ่จ€็ผ–ๅ†™ๆ™บ่ƒฝๅˆ็บฆไปฃ็ ใ€‚้ƒจ็ฝฒๅœจ้“พไธŠๅŽ๏ผŒๅฏไปฅๆŽฅๅ—ๆฅ่‡ชๅค–้ƒจ็š„ไบคๆ˜“่ฏทๆฑ‚ๅ’Œไบ‹ไปถ๏ผŒไปฅ่งฆๅ‘ๆ‰ง่กŒ็‰นๅฎš็š„ๅˆ็บฆไปฃ็ ้€ป่พ‘๏ผŒ่ฟ›ไธ€ๆญฅ็”Ÿๆˆๆ–ฐ็š„ไบคๆ˜“ๅ’Œไบ‹ไปถใ€‚็”š่‡ณ่ฐƒ็”จๅ…ถไป–็š„ๆ™บ่ƒฝๅˆ็บฆใ€‚
  • ไธ–็•Œ็Šถๆ€๏ผšstate๏ผŒ็ฎก็†่ดฆๆˆทๅœฐๅ€ๅˆฐ่ดฆๆˆท็Šถๆ€็š„ๆ˜ ๅฐ„ๅ…ณ็ณปใ€‚ๆ‰€ๆœ‰่ดฆๆˆท็š„็Šถๆ€ๆž„ๆˆๆ•ดไธชๅŒบๅ—้“พ็Šถๆ€ใ€‚
  • ไบคๆ˜“๏ผšTransaction๏ผŒๆ˜ฏๅค–้ƒจไธŽไปฅๅคชๅŠไบคไบ’็š„ๅ”ฏไธ€้€”ๅพ„๏ผŒๅฟ…้กป็”ฑๅค–้ƒจ่ดฆๆˆท็ญพๅ๏ผŒ็Ÿฟๅทฅๆ‰ง่กŒไบคๆ˜“๏ผŒๆœ€็ปˆๆ‰“ๅŒ…ๅˆฐๅŒบๅ—ไธญใ€‚
  • ไบคๆ˜“ๆ”ถๆฎ๏ผšReceipt๏ผŒๆ˜ฏๆ–นไพฟๅฏนไบคๆ˜“่ฟ›่กŒ้›ถ็Ÿฅ่ฏ†่ฏๆ˜Žใ€็ดขๅผ•ๅ’Œๆœ็ดข๏ผŒๅฐ†ไบคๆ˜“ๆ‰ง่กŒ่ฟ‡็จ‹ไธญ็š„ไธ€ไบ›็‰นๅฎšไฟกๆฏ็ผ–็ ไธบไบคๆ˜“ๆ”ถๆฎใ€‚
  • ๅŒบๅ—๏ผšblock๏ผŒๆ˜ฏ็”ฑไธ€็ป„ไบคๆ˜“ๅ’Œไธ€ไบ›่พ…ๅŠฉไฟกๆฏ๏ผˆ็ฎ€็งฐๅŒบๅ—ๅคด๏ผ‰ใ€ๅ…ถไป–ๅŒบๅ—ๅคดๅ“ˆๅธŒๆž„ๆˆ็š„ๆ•ฐๆฎๅ—ใ€‚ๅ…ถไป–ๅŒบๅ—ๅคดๅ“ˆๅธŒ่กจ็คบ็ˆถๅŒบๅ—ๆˆ–่€…ๅ”ๅŒบๅ—ใ€‚
  • ๅ”ๅ—๏ผšUncle Block๏ผŒไธ่ƒฝๆˆไธบไธป้“พไธ€้ƒจๅˆ†็š„ๅญคๅ„ฟๅŒบๅ—๏ผŒๅฆ‚ๆžœๆœ‰ๅนธ่ขซๅŽๆฅ็š„ๅŒบๅ—ๆ”ถ็•™่ฟ›ๅŒบๅ—้“พๅฐฑๅ˜ๆˆไบ†ๅ”ๅ—ใ€‚ๆ”ถ็•™ไบ†ๅญคๅ—็š„ๅŒบๅ—ๆœ‰้ขๅค–็š„ๅฅ–ๅŠฑใ€‚ๅญคๅ—ไธ€ๆ—ฆๆˆไธบๅ”ๅ—๏ผŒ่ฏฅๅŒบๅ—็ปŸไธ€ๅฏ่Žทๅพ—ๅฅ–ๅŠฑใ€‚้€š่ฟ‡ๅ”ๅ—ๅฅ–ๅŠฑๆœบๅˆถ๏ผŒๆฅ้™ไฝŽไปฅๅคชๅŠ่ฝฏๅˆ†ๅ‰ๅ’Œๅนณ่กก็ฝ‘้€Ÿๆ…ข็š„็Ÿฟๅทฅๅˆฉ็›Šใ€‚
  • ้šๆœบๆ•ฐ๏ผšnonce๏ผŒ่ฎฐๅฝ•ๅœจๅŒบๅ—ๅคดไธญ๏ผŒๅŠชๅŠ›ๅทฅไฝœ็š„่ฏๆ˜Žใ€‚
  • Gas๏ผš็‡ƒๆ–™ๆ˜ฏไบคๆ˜“ๆ‰“ๅŒ…ๅˆฐๅŒบๅ—ๆ—ถ๏ผŒๅœจ EVM ่ฟ่กŒๆ‰€ๆถˆ่€—็š„่ต„ๆบ้‡็š„ไธ€็งๅฝข่ฑกๅŒ–ๆฆ‚ๅฟต๏ผŒๆฏ”ๅ–ป้œ€่ฆ็‡ƒๆ–™ๆ‰่ƒฝ่ฟ่กŒ EVMใ€‚ๅœจไปฅๅคชๅŠไธญ๏ผŒๅฐ† CPU ่ต„ๆบใ€ๅญ˜ๅ‚จ่ต„ๆบๆŒ‰ๅ†…็ฝฎ็š„่ง„ๅˆ™๏ผŒ็ปŸไธ€ไฝฟ็”จ Gas ไฝœไธบ่ต„ๆบๅ•ไฝ่กจ่พพใ€‚ๆฏๆ‰ง่กŒไธ€ๆฌก่™šๆ‹ŸๆœบๆŒ‡ไปค๏ผŒๅ‡ๆถˆ่€—ไธ€ๅฎš็š„ Gasใ€‚
  • GasPrice: ็‡ƒๆ–™ไปทๆ ผ๏ผŒไปปไฝ•ไบคๆ˜“้ƒฝ้œ€่ฆๅŒ…ๅซไธ€ไธชๆ„ฟๆ„ๆ”ฏไป˜็š„็‡ƒๆ–™ๅ•ไปท๏ผŒๆœ€็ปˆๆ นๆฎไบคๆ˜“ๆถˆ่€—็š„็‡ƒๆ–™้‡๏ผŒ่ฎก็ฎ—ๆ‰‹็ปญ่ดน (usedGas*gasPrice) ๆ”ฏไป˜็ป™็Ÿฟๅทฅใ€‚
  • ไปทๆ ผ้ข„ๆต‹๏ผšGPO(Gas Price Oracle)๏ผŒGas ไปทๆ ผ้ข„ๆต‹๏ผŒๆ นๆฎๅŽ†ๅฒไบคๆ˜“็š„ GasPrice ้ข„ๆต‹ๆœชๆฅ GasPrice ่ตฐๅŠฟใ€‚

ๆŠ€ๆœฏๆœฏ่ฏญ

  • ZKP: Zero Knowledge Proof๏ผŒ้›ถ็Ÿฅ่ฏ†่ฏๆ˜Žใ€‚
  • EVM๏ผšEthereum Virtual Machine๏ผŒไปฅๅคชๅŠ่™šๆ‹Ÿๆœบๆ˜ฏๆ‰ง่กŒไบคๆ˜“็š„ไธ€ไธช่ฝป้‡็บงๆฒ™็›’่™šๆ‹Ÿๆœบใ€‚
  • Message๏ผšๆถˆๆฏ๏ผŒๆ˜ฏไธ€ไธชไธ่ƒฝๅบๅˆ—ๅŒ–็š„๏ผŒๅนถไธ”ๅชๅญ˜ๅœจไบŽไปฅๅคชๅŠ่ฟ่กŒ็Žฏๅขƒไธญ็š„่™šๆ‹Ÿๅฏน่ฑก๏ผŒไธ€ๆกๆถˆๆฏไธป่ฆๅŒ…ๆ‹ฌ๏ผšๆถˆๆฏ็š„ๅ‘้€ๆ–นใ€ๆŽฅๆ”ถๆ–นใ€gasLimit ็ญ‰็ญ‰๏ผ›
  • ๅบๅˆ—ๅŒ–๏ผšๅฐ†ๆ•ฐๆฎไฝฟ็”จRLP็ผ–็ ไธบไธ€็ป„ๅญ—่Š‚ๆ•ฐๆฎ๏ผŒไพฟไบŽๆ•ฐๆฎไบคๆขไธŽๅญ˜ๅ‚จใ€‚
  • RLP: ้€’ๅฝ’้•ฟๅบฆๅ‰็ผ€็ผ–็ ๏ผŒไธ€็ง่ƒฝๅคŸๅŽ‹็ผฉๆ•ฐๆฎ็š„ๆ•ฐๆฎ็ผ–็ ๅ่ฎฎ๏ผŒๅœจไปฅๅคชๅŠไธญๅธธ็”จไบŽๅบๅˆ—ๅŒ–ๆ•ฐๆฎใ€‚
  • MPT๏ผš้ป˜ๅ…‹ๅฐ”ๅŽ‹็ผฉๅ‰็ผ€ๆ ‘๏ผŒ Merkle Patricia Tree๏ผŒๆ˜ฏไธ€็ง็ป่ฟ‡ๆ”น่‰ฏ็š„ใ€่žๅˆไบ†้ป˜ๅ…‹ๅฐ”ๆ ‘ๅ’Œๅ‰็ผ€ๆ ‘ไธค็งๆ ‘็ป“ๆž„ไผ˜็‚น็š„ๆ•ฐๆฎ็ป“ๆž„๏ผŒๆ˜ฏไปฅๅคชๅŠไธญ็”จๆฅ็ป„็ป‡็ฎก็†่ดฆๆˆทๆ•ฐๆฎใ€็”Ÿๆˆไบคๆ˜“้›†ๅˆๅ“ˆๅธŒ็š„้‡่ฆๆ•ฐๆฎ็ป“ๆž„ใ€‚
  • Patricia Trie: ไธ€็งๅŽ‹็ผฉๅ‰็ผ€ๆ ‘๏ผŒๆ˜ฏไธ€็งๆ›ด่Š‚็œ็ฉบ้—ด็š„ๆ ‘๏ผŒๅฏนไบŽ trie ็š„ๆฏไธช่Š‚็‚น๏ผŒๅฆ‚ๆžœ่ฏฅ่Š‚็‚นๆ˜ฏๅ…ถ็ˆถ่Š‚็‚นๅ”ฏไธ€็š„ๅ„ฟๅญ็š„่ฏ๏ผŒๅฐฑๅ’Œ็ˆถ่Š‚็‚น็ป“ๅˆ๏ผ›
  • Merkle Tree: ้ป˜ๅ…‹ๅฐ”ๆ ‘๏ผŒไนŸ็งฐไธบ Hash Tree๏ผŒ้ป˜ๅ…‹ๅฐ”ๆ ‘ๅถๅญ่Š‚็‚น็š„valueๆ˜ฏๆ•ฐๆฎ้กน็š„ๅ†…ๅฎน๏ผŒๆˆ–่€…ๆ˜ฏๆ•ฐๆฎ้กน็š„ๅ“ˆๅธŒๅ€ผ๏ผ›้žๅถๅญ่Š‚็‚น็š„valueๆ นๆฎๅ…ถๅญฉๅญ่Š‚็‚น็š„ไฟกๆฏ๏ผŒ็„ถๅŽๆŒ‰็…งHash็ฎ—ๆณ•่ฎก็ฎ—่€Œๅพ—ๅ‡บ็š„ใ€‚
  • Whisper๏ผšๅฏ†่ฏญ๏ผŒๆ˜ฏไธ€็งไพๆ‰˜ไบŽ P2P ็š„้€šไฟกๅ่ฎฎ๏ผŒ้€š่ฟ‡ Whisper ๅ่ฎฎ๏ผŒ่Š‚็‚นๅฏไปฅๅฐ†ไฟกๆฏๅ‘้€็ป™ๆŸไธช็‰นๅฎš่Š‚็‚น๏ผŒๅฎž็ŽฐๅŒ่Š‚็‚น็ง่Šๅ’ŒๆŒ‰ไธป้ข˜ๅœจๅคšไธช่Š‚็‚นไธŠ้€šไฟกใ€‚ไธป่ฆ็”จไบŽๅคง่ง„ๆจก็š„็‚นๅฏน็‚นๆ•ฐๆฎๅ‘็Žฐใ€ไฟกๅทๅๅ•†ใ€ๆœ€ๅฐไผ ่พ“้€šไฟกใ€ๅฎŒๅ…จ้š็งไฟๆŠค็š„ DApp ่€Œ่ฎพ่ฎก็š„ใ€‚
  • LES๏ผš Light Ethereum Subprotocol๏ผŒไปฅๅคชๅŠๅฎขๆˆท็ซฏ็š„่ฝป้‡็บง็š„ๅญๅ่ฎฎ๏ผŒๅช้œ€่ฆไธ‹่ฝฝๅŒบๅ—ๅคด๏ผŒๅ…ถไป–่ฏฆ็ป†ไฟกๆฏๅฏไปฅๆŒ‰้œ€่Žทๅ–๏ผ›LES Wiki
  • Swarm๏ผš ่œ‚ๅทข๏ผŒๆ˜ฏไธ€ไธชๅˆ†ๅธƒๅผๅญ˜ๅ‚จๅนณๅฐๅ’Œๅ†…ๅฎนๅˆ†ๅ‘ๆœๅŠก๏ผŒๆ˜ฏไปฅๅคชๅŠ web 3 ๆŠ€ๆœฏๆ ˆ็š„ๆœฌๅœฐๅŸบ็ก€ๅฑ‚ๆœๅŠก;
  • LLL๏ผŒSperpentใ€Mutanๅ’ŒSolidity๏ผš็”จไบŽ็ผ–ๅ†™ๆ™บ่ƒฝๅˆ็บฆไปฃ็ ็š„็š„็ผ–็จ‹่ฏญ่จ€๏ผŒ่ƒฝ่ขซ็ผ–่ฏ‘ๆˆ EVM ไปฃ็ ใ€‚
  • ERC20: ๅฏไปฅ็†่งฃๆˆ Ethereum ็š„ไธ€ไธช Token ๅ่ฎฎ่ง„่Œƒ๏ผŒๆ‰€ๆœ‰ๅŸบไบŽ Ethereum ๅผ€ๅ‘็š„ Token ๅˆ็บฆ้ƒฝ้ตๅฎˆ่ฟ™ไธช่ง„่Œƒใ€‚้ตๅฎˆ ERC20 ๅ่ฎฎ่ง„่Œƒ็š„ Token ๅฏไปฅ่ขซๅ„็ง Ethereum ้’ฑๅŒ…ๆ”ฏๆŒใ€‚
  • ERC721: ๆ˜ฏๅœจERC20ๆ ‡ๅ‡†ไธŠๅปบ็ซ‹็š„Tokenๅ่ฎฎ่ง„่Œƒ๏ผŒๆ˜ฏ้’ˆๅฏนไธๅฏไบ’ๆข Token(non-fungible tokens ็ฎ€็งฐ NFT)ๅš็š„ๆ™บ่ƒฝๅˆ็บฆๆ ‡ๅ‡†ใ€‚

ๆบ็ ๅˆ†ๆžๅ‡†ๅค‡

cmd ็›ฎๅฝ•้‡Œ่‡ชๅธฆ็š„ๅทฅๅ…ท.

Command Description
geth ๅ‘ฝไปค่กŒไธป็จ‹ๅบ๏ผŒไฝฟ็”จๅ‚่€ƒๅšๅฎข1 ๅšๅฎข2ๅ’Œๅฎ˜ๆ–นๆ–‡ๆกฃใ€‚
clef ็ญพๅๅทฅๅ…ท๏ผŒๅฏไปฅๅœจๅŽ็ซฏไธบgeth็ญพๅ.
devp2p P2P ๅผ€ๅ‘ๅทฅๅ…ท๏ผŒไธ็”จ่ฟ่กŒๅ…จ่Š‚็‚นๅฐฑๅฏไปฅๅ’Œๅ…ถไป–่Š‚็‚น้€šไฟกใ€‚
abigen ไปฃ็ ็”Ÿๆˆๅ™จ๏ผŒๆŠŠๅˆ็บฆๅฐ่ฃ…ๆˆๆ˜“็”จ Golang ็š„ๅŒ….
bootnode ๅฎขๆˆท็ซฏ็š„็ฒพ็ฎ€็‰ˆ๏ผŒๅชๅฎž็Žฐไบ†็ฝ‘็ปœ่Š‚็‚นๅ่ฎฎ, ๅฏไปฅๅœจ็งๆœ‰็ฝ‘็ปœไธญ่พ…ๅŠฉๅฏปๆ‰พ่Š‚็‚นใ€‚
evm ไปฅๅคชๅŠ่™šๆ‹Ÿๆœบ EVM ็š„ๅผ€ๅ‘็จ‹ๅบ ่ƒฝๅคŸๅœจๅฏ้…็ฝฎ็š„็Žฏๅขƒไธญ่ฟ่กŒๅบ•ๅฑ‚็š„ๅญ—่Š‚็ ็‰‡ๆฎต๏ผŒๆ–นไพฟ็ป†่‡ด็š„่ฐƒ่ฏ•ไปฅๅคชๅŠๆ“ไฝœ็ ๏ผŒๆทฑๅ…ฅๆ‰ง่กŒ่ฟ‡็จ‹ใ€‚
rlpdump ไปฅไปฅๅคชๅŠๅ่ฎฎ็š„็ผ–็  RLP (Recursive Length Prefix) ๆ ผๅผ่พ“ๅ‡บใ€‚
puppeth ๅˆ›ๅปบๆ–ฐ็š„ไปฅๅคชๅŠ็ฝ‘็ปœๆ—ถ็š„ๅผ•ๅฏผใ€‚

้กน็›ฎ็ป“ๆž„

โ”œโ”€โ”€ accounts	//่ดฆๆˆท็ฎก็†
โ”‚ย ย  โ”œโ”€โ”€ abi		//ๅฎž็Žฐ abi
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ bind //็”Ÿๆˆ ๅˆ็บฆ็š„ go ่ฏญ่จ€ๅฐ่ฃ…
โ”‚ย ย  โ”‚ย ย      โ””โ”€โ”€ backends
โ”‚ย ย  โ”œโ”€โ”€ external
โ”‚ย ย  โ”œโ”€โ”€ keystore //็ง้’ฅ็ฎก็†๏ผŒ้‡‡็”จ secp256k ๅŠ ๅฏ†
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ testdata
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ dupes
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ keystore
โ”‚ย ย  โ”‚ย ย      โ”‚ย ย  โ””โ”€โ”€ foo
โ”‚ย ย  โ”‚ย ย      โ””โ”€โ”€ v1
โ”‚ย ย  โ”‚ย ย          โ””โ”€โ”€ cb61d5a9c4896fb9658090b597ef0e7be6f7b67e
โ”‚ย ย  โ”œโ”€โ”€ scwallet
โ”‚ย ย  โ””โ”€โ”€ usbwallet //็กฌไปถ้’ฑๅŒ…๏ผŒ้€š่ฟ‡ USB ๆ’ๅ…ฅ
โ”‚ย ย      โ””โ”€โ”€ trezor	//็กฌไปถ้’ฑๅŒ…็š„ๅ่ฎฎ
โ”œโ”€โ”€ build	//็”จไบŽ็ผ–่ฏ‘ๅ’Œๆž„ๅปบ็š„่„šๆœฌ
โ”‚ย ย  โ”œโ”€โ”€ bin
โ”‚ย ย  โ””โ”€โ”€ deb
โ”‚ย ย      โ””โ”€โ”€ ethereum
โ”œโ”€โ”€ cmd	//ๅ‘ฝไปค่กŒๅทฅๅ…ท
โ”‚ย ย  โ”œโ”€โ”€ abidump
โ”‚ย ย  โ”œโ”€โ”€ abigen
โ”‚ย ย  โ”œโ”€โ”€ bootnode
โ”‚ย ย  โ”œโ”€โ”€ checkpoint-admin
โ”‚ย ย  โ”œโ”€โ”€ clef
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ docs
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ qubes
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ testdata
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ tests
โ”‚ย ย  โ”œโ”€โ”€ devp2p
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ internal
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ ethtest
โ”‚ย ย  โ”‚ย ย      โ”‚ย ย  โ””โ”€โ”€ testdata
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ v4test
โ”‚ย ย  โ”‚ย ย      โ””โ”€โ”€ v5test
โ”‚ย ย  โ”œโ”€โ”€ ethkey
โ”‚ย ย  โ”œโ”€โ”€ evm 
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ internal
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ compiler
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ t8ntool
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ testdata
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 1
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 10
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 11
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 12
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 13
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 14
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 15
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 16
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 17
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 18
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 19
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 2
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 3
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 4
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 5
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 7
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ 8
โ”‚ย ย  โ”‚ย ย      โ””โ”€โ”€ 9
โ”‚ย ย  โ”œโ”€โ”€ faucet //่ฝป้‡็บง็š„ๆฐด้พ™ๅคด๏ผˆ็”จไบŽๅ–ๆต‹่ฏ•ๅธ๏ผ‰
โ”‚ย ย  โ”œโ”€โ”€ geth
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ testdata
โ”‚ย ย  โ”‚ย ย      โ””โ”€โ”€ vcheck
โ”‚ย ย  โ”‚ย ย          โ”œโ”€โ”€ minisig-sigs
โ”‚ย ย  โ”‚ย ย          โ”œโ”€โ”€ signify-sigs
โ”‚ย ย  โ”‚ย ย          โ””โ”€โ”€ sigs
โ”‚ย ย  โ”œโ”€โ”€ p2psim //ๆจกๆ‹Ÿ HTTP API ็š„่ฐƒ็”จ
โ”‚ย ย  โ”œโ”€โ”€ puppeth //ๆž„ๅปบ็ง้“พ็›ธๅ…ณ
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ testdata
โ”‚ย ย  โ”œโ”€โ”€ rlpdump //ๆ ผๅผๅŒ– rlp ็ผ–็ ๏ผŒๆ›ดๅŠ ๆผ‚ไบฎ็š„่พ“ๅ‡บ
โ”‚ย ย  โ””โ”€โ”€ utils //ไธ€ไบ›่ฝฌๅŒ–ใ€่พ…ๅŠฉๅทฅๅ…ท
โ”œโ”€โ”€ common	//ๅทฅๅ…ท็ฑป
โ”‚ย ย  โ”œโ”€โ”€ bitutil //ๅฟซ้€Ÿ็š„ๆŒ‰ไฝๆ“ไฝœ
โ”‚ย ย  โ”œโ”€โ”€ compiler//ๅฐ่ฃ… Solidity ๅ’Œ Vyper ็š„ๅญ—่Š‚็ 
โ”‚ย ย  โ”œโ”€โ”€ fdlimit
โ”‚ย ย  โ”œโ”€โ”€ hexutil //ๅๅ…ญ่ฟ›ๅˆถ็ผ–็ 
โ”‚ย ย  โ”œโ”€โ”€ math //ๆ•ดๆ•ฐ็š„็›ธๅ…ณๆ•ฐๅญฆๅทฅๅ…ท
โ”‚ย ย  โ”œโ”€โ”€ mclock //็”จไบŽ่ฎกๆ—ถ็š„ๅ›บๅฎš็‚น
โ”‚ย ย  โ””โ”€โ”€ prque //ไผ˜ๅ…ˆ้˜Ÿๅˆ—ๆ•ฐๆฎ็ป“ๆž„
โ”œโ”€โ”€ consensus //ๅ…ฑ่ฏ†็ฎ—ๆณ•้ƒจๅˆ†
โ”‚ย ย  โ”œโ”€โ”€ clique //POA
โ”‚ย ย  โ”œโ”€โ”€ ethash //POW
โ”‚ย ย  โ””โ”€โ”€ misc
โ”œโ”€โ”€ console	//ๆŽงๅˆถๅฐ
โ”‚ย ย  โ”œโ”€โ”€ prompt
โ”‚ย ย  โ””โ”€โ”€ testdata
โ”œโ”€โ”€ contracts	//ๅˆ็บฆ้ƒจๅˆ†
โ”‚ย ย  โ””โ”€โ”€ checkpointoracle
โ”‚ย ย      โ””โ”€โ”€ contract
โ”œโ”€โ”€ core	//ๆ ธๅฟƒๆ•ฐๆฎ็ป“ๆž„๏ผŒๅŒ…ๆ‹ฌ็Šถๆ€ๆœบใ€้“พๅผ็ป“ๆž„ใ€่™šๆ‹Ÿๆœบ็ญ‰
โ”‚ย ย  โ”œโ”€โ”€ asm //่งฃๆžๆฑ‡็ผ–ๆŒ‡ไปค
โ”‚ย ย  โ”œโ”€โ”€ bloombits //ๅธƒ้š†่ฟ‡ๆปคๅ™จๆ‰น้‡ๅค„็†
โ”‚ย ย  โ”œโ”€โ”€ forkid //EIP-2124 (https://eips.ethereum.org/EIPS/eip-2124) ็š„ๅฎž็Žฐ
โ”‚ย ย  โ”œโ”€โ”€ rawdb //ๅบ•ๅฑ‚ๆ•ฐๆฎๅบ“่ฎฟ้—ฎ
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ testdata
โ”‚ย ย  โ”œโ”€โ”€ state //ไปฅๅคชๅŠ็Šถๆ€ๆ ‘็š„็ผ“ๅญ˜
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ pruner
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ snapshot //ๅŠจๆ€็Šถๆ€ๅญ˜ๅ‚จ
โ”‚ย ย  โ”œโ”€โ”€ types //ๅ…ฑ่ฏ†ๆœบๅˆถไธญ็š„ๆ•ฐๆฎ็ฑปๅž‹
โ”‚ย ย  โ””โ”€โ”€ vm //EVM ็š„ๅฎž็Žฐ
โ”‚ย ย      โ”œโ”€โ”€ runtime //่ดŸ่ดฃๅญ—่Š‚็ ็š„ๆ‰ง่กŒ
โ”‚ย ย      โ””โ”€โ”€ testdata
โ”‚ย ย          โ””โ”€โ”€ precompiles
โ”œโ”€โ”€ crypto	//ๅ“ˆๅธŒ็ฎ—ๆณ•ๅ’Œๅฏ†็ ๅญฆ
โ”‚ย ย  โ”œโ”€โ”€ blake2b 
โ”‚ย ย  โ”œโ”€โ”€ bls12381
โ”‚ย ย  โ”œโ”€โ”€ bn256
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ cloudflare
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ google
โ”‚ย ย  โ”œโ”€โ”€ ecies
โ”‚ย ย  โ”œโ”€โ”€ secp256k1
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ libsecp256k1
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ build-aux
โ”‚ย ย  โ”‚ย ย      โ”‚ย ย  โ””โ”€โ”€ m4
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ contrib
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ include
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ obj
โ”‚ย ย  โ”‚ย ย      โ”œโ”€โ”€ sage
โ”‚ย ย  โ”‚ย ย      โ””โ”€โ”€ src
โ”‚ย ย  โ”‚ย ย          โ”œโ”€โ”€ asm
โ”‚ย ย  โ”‚ย ย          โ”œโ”€โ”€ java
โ”‚ย ย  โ”‚ย ย          โ”‚ย ย  โ””โ”€โ”€ org
โ”‚ย ย  โ”‚ย ย          โ”‚ย ย      โ””โ”€โ”€ bitcoin
โ”‚ย ย  โ”‚ย ย          โ””โ”€โ”€ modules
โ”‚ย ย  โ”‚ย ย              โ”œโ”€โ”€ ecdh
โ”‚ย ย  โ”‚ย ย              โ””โ”€โ”€ recovery
โ”‚ย ย  โ””โ”€โ”€ signify
โ”œโ”€โ”€ docs	//้ƒจๅˆ†่ฏดๆ˜Žๆ–‡ๆกฃ
โ”‚ย ย  โ”œโ”€โ”€ audits
โ”‚ย ย  โ””โ”€โ”€ postmortems
โ”œโ”€โ”€ eth	//ไปฅๅคชๅŠๅ่ฎฎ
โ”‚ย ย  โ”œโ”€โ”€ catalyst //RPC ็›ธๅ…ณ
โ”‚ย ย  โ”œโ”€โ”€ downloader //ๅ…จ่Š‚็‚นๅŒๆญฅ
โ”‚ย ย  โ”œโ”€โ”€ ethconfig //ไปฅๅคชๅŠ้…็ฝฎๆ–‡ไปถๅ’Œ่ฝป่Š‚็‚น้…็ฝฎๆ–‡ไปถ
โ”‚ย ย  โ”œโ”€โ”€ fetcher //่Žทๅ–ๅŒๆญฅๆ—ถ็š„ๅŒบๅ—ๅคดใ€ไบคๆ˜“็ญ‰
โ”‚ย ย  โ”œโ”€โ”€ filters //ๅŒบๅ—ใ€ๆ—ฅๅฟ—ใ€ไบ‹ไปถใ€ไบคๆ˜“็š„่ฟ‡ๆปค
โ”‚ย ย  โ”œโ”€โ”€ gasprice
โ”‚ย ย  โ”œโ”€โ”€ protocols
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ eth
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ snap
โ”‚ย ย  โ””โ”€โ”€ tracers //่ทŸ่ธชไบคๆ˜“
โ”‚ย ย      โ”œโ”€โ”€ internal
โ”‚ย ย      โ”‚ย ย  โ””โ”€โ”€ tracetest
โ”‚ย ย      โ”‚ย ย      โ””โ”€โ”€ testdata
โ”‚ย ย      โ”‚ย ย          โ”œโ”€โ”€ call_tracer
โ”‚ย ย      โ”‚ย ย          โ””โ”€โ”€ call_tracer_legacy
โ”‚ย ย      โ”œโ”€โ”€ js //js ๅ†™็š„ไบคๆ˜“่ทŸ่ธชๅ™จ
โ”‚ย ย      โ”‚ย ย  โ””โ”€โ”€ internal
โ”‚ย ย      โ”‚ย ย      โ””โ”€โ”€ tracers
โ”‚ย ย      โ””โ”€โ”€ native //go ๅ†™็š„ไบคๆ˜“่ทŸ่ธชๅ™จ
โ”œโ”€โ”€ ethclient	//RPC ่ฐƒ็”จ็š„ๅฎขๆˆท็ซฏ
โ”‚ย ย  โ””โ”€โ”€ gethclient
โ”œโ”€โ”€ ethdb	//ๆ•ฐๆฎๅบ“
โ”‚ย ย  โ”œโ”€โ”€ dbtest
โ”‚ย ย  โ”œโ”€โ”€ leveldb //leveldb ๆ•ฐๆฎๅบ“ๅฎž็Žฐ
โ”‚ย ย  โ””โ”€โ”€ memorydb //ๅ†…ๅญ˜ๆ˜ ๅฐ„็š„ๆ•ฐๆฎๅบ“ๅฎž็Žฐ
โ”œโ”€โ”€ ethstats	//็ฝ‘็ปœ็Šถๆ€ๆ˜พ็คบ
โ”œโ”€โ”€ event	//ๅค„็†ๅฎžๆ—ถไบ‹ไปถ
โ”œโ”€โ”€ graphql	//ๆไพ› GraphQL ็š„ๅ€Ÿๅฃ
โ”œโ”€โ”€ internal	//ๅ†…้ƒจ็š„ไธ€ไบ›็ป„ไปถ
โ”‚ย ย  โ”œโ”€โ”€ build
โ”‚ย ย  โ”œโ”€โ”€ cmdtest
โ”‚ย ย  โ”œโ”€โ”€ debug
โ”‚ย ย  โ”œโ”€โ”€ ethapi
โ”‚ย ย  โ”œโ”€โ”€ flags
โ”‚ย ย  โ”œโ”€โ”€ guide
โ”‚ย ย  โ”œโ”€โ”€ jsre
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ deps
โ”‚ย ย  โ”œโ”€โ”€ syncx
โ”‚ย ย  โ”œโ”€โ”€ testlog
โ”‚ย ย  โ”œโ”€โ”€ utesting
โ”‚ย ย  โ””โ”€โ”€ web3ext
โ”œโ”€โ”€ les	//่ฝป้‡็บงไปฅๅคชๅŠๅญๅ่ฎฎ(LES)
โ”‚ย ย  โ”œโ”€โ”€ checkpointoracle
โ”‚ย ย  โ”œโ”€โ”€ downloader
โ”‚ย ย  โ”œโ”€โ”€ fetcher
โ”‚ย ย  โ”œโ”€โ”€ flowcontrol
โ”‚ย ย  โ”œโ”€โ”€ utils
โ”‚ย ย  โ””โ”€โ”€ vflux
โ”‚ย ย      โ”œโ”€โ”€ client
โ”‚ย ย      โ””โ”€โ”€ server
โ”œโ”€โ”€ light //ๅ‘่ฝป้‡็บงๅฎขๆˆท็ซฏๆไพ›ๆŒ‰้œ€ๆฃ€็ดข็š„ๅŠŸ่ƒฝ
โ”œโ”€โ”€ log	//ๆ—ฅๅฟ—
โ”œโ”€โ”€ metrics	//็ฃ็›˜่ฏปๅ†™็›ธๅ…ณ
โ”‚ย ย  โ”œโ”€โ”€ exp
โ”‚ย ย  โ”œโ”€โ”€ influxdb
โ”‚ย ย  โ”œโ”€โ”€ librato
โ”‚ย ย  โ””โ”€โ”€ prometheus
โ”œโ”€โ”€ miner	//ๅŒบๅ—็”Ÿๆˆๅ’ŒๆŒ–็Ÿฟ
โ”‚ย ย  โ””โ”€โ”€ stress
โ”‚ย ย      โ”œโ”€โ”€ 1559 //EIP1559 ็š„ๅŽ‹ๅŠ›ๆต‹่ฏ•
โ”‚ย ย      โ”œโ”€โ”€ clique //Clique ็š„ๅŽ‹ๆต‹
โ”‚ย ย      โ””โ”€โ”€ ethash //ethash ็š„ๅŽ‹ๆต‹
โ”œโ”€โ”€ mobile //ไธบ็งปๅŠจ็ซฏ่ฎพ็ฝฎ็š„็ฎ€ๅŒ–็‰ˆ API
โ”œโ”€โ”€ node	//่Š‚็‚นๅ่ฎฎ
โ”œโ”€โ”€ p2p	//P2P ็ฝ‘็ปœๅ่ฎฎ
โ”‚ย ย  โ”œโ”€โ”€ discover //่Š‚็‚นๅ‘็Žฐๅ่ฎฎ
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ v4wire //v4 ็‰ˆๆœฌ
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ v5wire //v5 ็‰ˆๆœฌ
โ”‚ย ย  โ”‚ย ย      โ””โ”€โ”€ testdata
โ”‚ย ย  โ”œโ”€โ”€ dnsdisc //EIP1459 ๆๅ‡บ็š„ๅ‘็Žฐๅ่ฎฎ
โ”‚ย ย  โ”œโ”€โ”€ enode
โ”‚ย ย  โ”œโ”€โ”€ enr //EIP778 ๆๅ‡บ็š„่Š‚็‚น่ฎฐๅฝ•
โ”‚ย ย  โ”œโ”€โ”€ msgrate //ไผฐ่ฎก่Š‚็‚นๅžๅ้‡ๅฎž็Žฐๆ›ดๅนณ่กก็š„ไผ ่พ“
โ”‚ย ย  โ”œโ”€โ”€ nat //็ซฏๅฃๆ˜ ๅฐ„
โ”‚ย ย  โ”œโ”€โ”€ netutil
โ”‚ย ย  โ”œโ”€โ”€ nodestate
โ”‚ย ย  โ”œโ”€โ”€ rlpx //RLPx ไผ ่พ“ๅ่ฎฎ
โ”‚ย ย  โ”œโ”€โ”€ simulations
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ adapters
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ examples
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ pipes
โ”‚ย ย  โ””โ”€โ”€ tracker
โ”œโ”€โ”€ params	//ๅ‚ๆ•ฐ่ง„ๅฎš
โ”œโ”€โ”€ rlp	//RLP ๅบๅˆ—ๅŒ–ๆ ผๅผ
โ”œโ”€โ”€ rpc	//ๅŒๅ‘ JSON-RPC 2.0
โ”‚ย ย  โ””โ”€โ”€ testdata
โ”œโ”€โ”€ signer	//ๆ•ฐๅญ—็ญพๅ้ƒจๅˆ†
โ”‚ย ย  โ”œโ”€โ”€ core
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ apitypes
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ testdata
โ”‚ย ย  โ”‚ย ย      โ””โ”€โ”€ fuzzing
โ”‚ย ย  โ”œโ”€โ”€ fourbyte
โ”‚ย ย  โ”œโ”€โ”€ rules
โ”‚ย ย  โ””โ”€โ”€ storage
โ”œโ”€โ”€ swarm	//swarm ็พค่Š‚็‚น
โ”œโ”€โ”€ tests	//ๆต‹่ฏ•ๆ•ฐๆฎ
โ”‚ย ย  โ”œโ”€โ”€ fuzzers
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ abi
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ bitutil
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ bls12381
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ testdata
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ bn256
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ difficulty
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ debug
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ keystore
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ corpus
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ les
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ debug
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ rangeproof
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ corpus
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ debug
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ rlp
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ corpus
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ runtime
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ secp256k1
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ stacktrie
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ debug
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ trie
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ corpus
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ txfetcher
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ corpus
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ vflux
โ”‚ย ย  โ”‚ย ย      โ””โ”€โ”€ debug
โ”‚ย ย  โ”œโ”€โ”€ solidity
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ contracts
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ migrations
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ test
โ”‚ย ย  โ””โ”€โ”€ testdata
โ””โ”€โ”€ trie	//ๅŒบๅ—็š„้‡่ฆๆ•ฐๆฎ็ป“ๆž„ MPT

ๅบ•ๅฑ‚ๆบ็ ๅ‚่€ƒ

About

go-ethereum source code analyzation under the perspective of smart contract security

Resources

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
COPYING

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published