แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ“แƒ”แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ”?

2017 แƒฌแƒšแƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ”แƒ— แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ” [แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒ“แƒ แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒžแƒ แƒแƒคแƒ˜แƒšแƒจแƒ˜] แƒ™แƒšแƒแƒกแƒ˜แƒ™แƒฃแƒ  P2P แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ”แƒ‘แƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒ˜แƒ—.

แƒ’แƒแƒ•แƒ˜แƒ“แƒ 2.5 แƒฌแƒ”แƒšแƒก, แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒซแƒ”แƒšแƒ˜แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ”แƒ‘แƒ: แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒแƒฎแƒšแƒ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ iOS, Web PWA, Windows, GNU/Linux, Mac OS แƒ“แƒ Android-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ“แƒฆแƒ”แƒก แƒฉแƒ•แƒ”แƒœ แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜แƒก แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜ แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ›แƒ˜แƒกแƒ˜ API-แƒ˜แƒ—.
แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ“แƒ”แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ”?

แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒ˜แƒœแƒ“แƒแƒ“แƒ, แƒ แƒแƒ› แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ›แƒ แƒ’แƒแƒ“แƒแƒญแƒ แƒ แƒ™แƒšแƒแƒกแƒ˜แƒ™แƒฃแƒ แƒ˜ P2P แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ“แƒ”แƒœแƒชแƒ˜แƒแƒšแƒฃแƒ แƒแƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ˜:

  • แƒ”แƒ แƒ—แƒ˜ แƒ“แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒ˜แƒ— แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“ - แƒแƒ  แƒแƒ แƒ˜แƒก แƒขแƒ”แƒšแƒ”แƒคแƒแƒœแƒ”แƒ‘แƒ˜ แƒแƒœ แƒ”แƒš.แƒฌแƒ”แƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜, แƒแƒ  แƒแƒ แƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ”แƒ‘แƒ–แƒ” แƒแƒœ แƒ’แƒ”แƒแƒšแƒแƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ–แƒ”.
  • แƒ—แƒแƒœแƒแƒ›แƒแƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ”แƒ‘แƒ˜ แƒแƒ แƒแƒกแƒแƒ“แƒ”แƒก แƒแƒ›แƒงแƒแƒ แƒ”แƒ‘แƒ”แƒœ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒก; แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ—แƒแƒœ แƒ›แƒ˜แƒฃแƒฌแƒ•แƒ“แƒแƒ›แƒ”แƒšแƒ˜แƒ.
  • แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜แƒ End-to-End curve25519xsalsa20poly1305. แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒ”แƒก แƒแƒ แƒแƒ•แƒ˜แƒก แƒ’แƒแƒแƒ™แƒ•แƒ˜แƒ แƒ•แƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒฆแƒ˜แƒแƒ.
  • MITM แƒจแƒ”แƒขแƒ”แƒ•แƒ แƒ’แƒแƒ›แƒแƒ แƒ˜แƒชแƒฎแƒฃแƒšแƒ˜แƒ - แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒแƒ แƒ˜แƒก แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ แƒ“แƒ แƒฎแƒ”แƒšแƒก แƒแƒฌแƒ”แƒ แƒก Ed25519 EdDSA.
  • แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒ›แƒ—แƒแƒ•แƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ‘แƒšแƒแƒ™แƒจแƒ˜. แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒšแƒแƒ‘แƒ แƒ“แƒ timestamp แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒแƒกแƒฌแƒแƒ แƒแƒ— แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜ แƒ“แƒ, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ.
  • โ€žแƒ”แƒก แƒแƒ  แƒ›แƒ˜แƒ—แƒฅแƒ•แƒแƒ›แƒกโ€œ แƒแƒ  แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ” แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ—.
  • แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก โ€žแƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ‘แƒแƒกโ€œ. แƒ”แƒก แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒ™แƒแƒœแƒกแƒ”แƒœแƒกแƒฃแƒกแƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒ— แƒ“แƒ แƒ›แƒแƒก แƒ”แƒ™แƒฃแƒ—แƒ•แƒœแƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜.
  • แƒชแƒ”แƒœแƒ–แƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ - แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ‘แƒšแƒแƒ™แƒ•แƒ แƒ“แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ.
  • Blockchain 2FA แƒแƒ แƒ˜แƒก แƒฏแƒแƒฏแƒแƒฎแƒ”แƒ—แƒฃแƒ แƒ˜ 2FA-แƒก แƒแƒšแƒขแƒ”แƒ แƒœแƒแƒขแƒ˜แƒ•แƒ SMS-แƒ˜แƒ—, แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒฏแƒแƒœแƒ›แƒ แƒ—แƒ”แƒšแƒแƒ‘แƒ แƒ“แƒแƒแƒœแƒ’แƒ แƒ˜แƒ.
  • แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒฃแƒ‘แƒ แƒ˜แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒ“แƒ แƒแƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ˜แƒ“แƒแƒœ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒแƒ  แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ.
  • แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ”แƒ‘แƒ. แƒแƒ แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒแƒ–แƒ”, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒฅแƒกแƒ”แƒšแƒจแƒ˜. แƒแƒ แƒกแƒ”แƒ‘แƒ˜แƒ—แƒแƒ“, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ“แƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ”แƒ‘แƒ แƒ›แƒ˜แƒ›แƒฆแƒ”แƒ‘แƒ˜แƒก แƒฃแƒœแƒแƒ แƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜แƒก แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ”แƒ‘แƒจแƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ“แƒ˜แƒก แƒ›แƒญแƒ˜แƒ“แƒ แƒ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ แƒ™แƒ แƒ˜แƒžแƒขแƒแƒ•แƒแƒšแƒฃแƒขแƒ”แƒ‘แƒ—แƒแƒœ Ethereum, Dogecoin, Lisk, Dash, Bitcoin (แƒ”แƒก แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก) แƒ“แƒ แƒฉแƒ”แƒ—แƒ”แƒ‘แƒจแƒ˜ แƒขแƒแƒ™แƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒแƒก. แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒ แƒ˜แƒžแƒขแƒ แƒ’แƒแƒ“แƒแƒ›แƒชแƒ•แƒšแƒ”แƒšแƒ˜แƒช แƒ™แƒ˜ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ—.

แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ - แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜.

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒแƒ แƒ˜แƒก แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ

แƒงแƒ•แƒ”แƒšแƒ แƒฃแƒ™แƒ•แƒ” แƒ›แƒ˜แƒฉแƒ•แƒ”แƒฃแƒšแƒ˜แƒ แƒ˜แƒ› แƒคแƒแƒฅแƒขแƒก, แƒ แƒแƒ› แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒจแƒ˜ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ“แƒแƒกแƒชแƒ”แƒ›แƒก แƒขแƒแƒ™แƒ”แƒœแƒ”แƒ‘แƒก (แƒ›แƒแƒœแƒ”แƒขแƒ”แƒ‘แƒก) แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ’แƒแƒœ แƒ›แƒ”แƒแƒ แƒ”แƒ–แƒ”. แƒ‘แƒ˜แƒขแƒ™แƒแƒ˜แƒœแƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒแƒ“. แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒขแƒ˜แƒžแƒ˜แƒก แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒชแƒ”แƒ›แƒแƒ“.

แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ” แƒ›แƒ”แƒกแƒ”แƒœแƒฏแƒ”แƒ แƒจแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ˜แƒแƒ แƒแƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜:

  1. แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ
  2. แƒฉแƒแƒ“แƒ”แƒ— แƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒ’แƒแƒ แƒ˜แƒ’แƒ”แƒ‘แƒแƒจแƒ˜
  3. แƒฎแƒ”แƒšแƒ˜ แƒ›แƒแƒแƒฌแƒ”แƒ แƒ”แƒ— แƒ’แƒแƒ แƒ˜แƒ’แƒ”แƒ‘แƒแƒก
  4. แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ— แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒ™แƒ•แƒแƒœแƒซแƒจแƒ˜
  5. แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก โ€žแƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ‘แƒแƒกโ€œ.
  6. แƒ—แƒฃ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒฌแƒ”แƒกแƒ แƒ˜แƒ’แƒจแƒ˜แƒ, แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ แƒจแƒ”แƒ“แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ‘แƒšแƒแƒ™แƒจแƒ˜
  7. แƒ›แƒ˜แƒ›แƒฆแƒ”แƒ‘แƒ˜ แƒ˜แƒฆแƒ”แƒ‘แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒแƒก แƒ“แƒ แƒจแƒ˜แƒคแƒ แƒแƒ•แƒก

แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜ 1โ€“3 แƒ“แƒ 7 แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒแƒ“ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ–แƒ”, แƒฎแƒแƒšแƒ 5โ€“6 แƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฐแƒแƒกแƒขแƒ”แƒ‘แƒ–แƒ”.

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ›แƒ˜แƒ›แƒฆแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฏแƒแƒ แƒ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒแƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒกแƒแƒฏแƒแƒ แƒ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒ“แƒแƒœ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ›แƒ˜แƒ›แƒฆแƒ”แƒ‘แƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒแƒœแƒฃ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› แƒ”แƒ แƒ—แƒ˜ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ. แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— REST แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ GET /api/accounts/getPublicKey?address={ADAMANT address}, แƒฎแƒแƒšแƒ แƒฉแƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒกแƒแƒก แƒฃแƒ™แƒ•แƒ” แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ—แƒแƒœแƒแƒ›แƒแƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฏแƒแƒ แƒ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ”แƒ‘แƒ˜.

แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ“แƒ”แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ”?

แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜ แƒจแƒ˜แƒคแƒ แƒแƒ•แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒก curve25519xsalsa20poly1305 แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— (NaCl แƒงแƒฃแƒ—แƒ˜). แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก Ed25519 แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ”แƒ‘แƒก, แƒงแƒฃแƒ—แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“, แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒฏแƒ”แƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ“แƒแƒ™แƒ”แƒ—แƒ“แƒ”แƒก Curve25519 Diffie-Hellman-แƒจแƒ˜.

แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ JavaScript-แƒจแƒ˜:

/**
 * Encodes a text message for sending to ADM
 * @param {string} msg message to encode
 * @param {*} recipientPublicKey recipient's public key
 * @param {*} privateKey our private key
 * @returns {{message: string, nonce: string}}
 */
adamant.encodeMessage = function (msg, recipientPublicKey, privateKey) {
  const nonce = Buffer.allocUnsafe(24)
  sodium.randombytes(nonce)

  if (typeof recipientPublicKey === 'string') {
    recipientPublicKey = hexToBytes(recipientPublicKey)
  }

  const plainText = Buffer.from(msg)
  const DHPublicKey = ed2curve.convertPublicKey(recipientPublicKey)
  const DHSecretKey = ed2curve.convertSecretKey(privateKey)

  const encrypted = nacl.box(plainText, nonce, DHPublicKey, DHSecretKey)

  return {
    message: bytesToHex(encrypted),
    nonce: bytesToHex(nonce)
  }
}

แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ แƒ›แƒ˜แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ—

แƒ’แƒแƒ แƒ˜แƒ’แƒ”แƒ‘แƒแƒก แƒแƒฅแƒ•แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ:

{
  "id": "15161295239237781653",
  "height": 7585271,
  "blockId": "16391508373936326027",
  "type": 8,
  "block_timestamp": 45182260,
  "timestamp": 45182254,
  "senderPublicKey": "bd39cc708499ae91b937083463fce5e0668c2b37e78df28f69d132fce51d49ed",
  "senderId": "U16023712506749300952",
  "recipientId": "U17653312780572073341",
  "recipientPublicKey": "23d27f616e304ef2046a60b762683b8dabebe0d8fc26e5ecdb1d5f3d291dbe21",
  "amount": 204921300000000,
  "fee": 50000000,
  "signature": "3c8e551f60fedb81e52835c69e8b158eb1b8b3c89a04d3df5adc0d99017ffbcb06a7b16ad76d519f80df019c930960317a67e8d18ab1e85e575c9470000cf607",
  "signatures": [],
  "confirmations": 3660548,
  "asset": {}
}

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ˜แƒ’แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ˜แƒก แƒแƒ แƒ˜แƒก asset - แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒแƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒจแƒ˜ chat แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒ—:

  • message - แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒ”แƒ— แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ
  • own_message -แƒแƒ แƒแƒคแƒ”แƒ แƒ˜
  • type - แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒขแƒ˜แƒžแƒ˜

แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒ˜แƒงแƒแƒคแƒ แƒขแƒ˜แƒžแƒ”แƒ‘แƒแƒ“. แƒแƒ แƒกแƒ”แƒ‘แƒ˜แƒ—แƒแƒ“, แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ type แƒ’แƒ”แƒฃแƒ‘แƒœแƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ˜แƒ’แƒ message. แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ— แƒขแƒ”แƒฅแƒกแƒขแƒ˜, แƒแƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ— แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒœแƒ˜แƒ•แƒ—แƒ”แƒ‘แƒ˜แƒ— - แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜ แƒแƒกแƒ” แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ™แƒ แƒ˜แƒžแƒขแƒแƒ•แƒแƒšแƒฃแƒขแƒ˜แƒก แƒ’แƒแƒ“แƒแƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒ‘แƒก แƒฉแƒแƒขแƒ”แƒ‘แƒจแƒ˜.

แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒแƒก:

{
  "transaction": {
    "type": 8,
    "amount": 0,
    "senderId": "U12499126640447739963",
    "senderPublicKey": "e9cafb1e7b403c4cf247c94f73ee4cada367fcc130cb3888219a0ba0633230b6",
    "asset": {
      "chat": {
        "message": "cb682accceef92d7cddaaddb787d1184ab5428",
        "own_message": "e7d8f90ddf7d70efe359c3e4ecfb5ed3802297b248eacbd6",
        "type": 1
      }
    },
    "recipientId": "U15677078342684640219",
    "timestamp": 63228087,
    "signature": "ั‚ัƒั‚ ะฑัƒะดะตั‚ ะฟะพะดะฟะธััŒ"
  }
}

แƒ’แƒแƒ แƒ˜แƒ’แƒ”แƒ‘แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒแƒฌแƒ”แƒ แƒ

แƒ˜แƒ›แƒ˜แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒกแƒแƒงแƒแƒคแƒแƒ“, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒ’แƒแƒ›แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒ˜แƒ›แƒฆแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ“แƒ แƒแƒกแƒ แƒ“แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒจแƒ˜, แƒ’แƒแƒ แƒ˜แƒ’แƒ”แƒ‘แƒ แƒ’แƒแƒคแƒแƒ แƒ›แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ. แƒชแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ แƒฎแƒ”แƒšแƒ›แƒแƒฌแƒ”แƒ แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒแƒ“แƒแƒแƒ›แƒแƒฌแƒ›แƒแƒ— แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒแƒ•แƒ—แƒ”แƒœแƒขแƒฃแƒ แƒแƒ‘แƒ แƒกแƒแƒฏแƒแƒ แƒ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— - แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ.

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒแƒ•แƒแƒ“ แƒฎแƒ”แƒšแƒ›แƒแƒฌแƒ”แƒ แƒ แƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—:

แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ“แƒ”แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ”?

แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ แƒ’แƒ•แƒ˜แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก, แƒ แƒแƒ› แƒฏแƒ”แƒ  แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒแƒก แƒ•แƒแƒจแƒ˜แƒจแƒ แƒ”แƒ‘แƒ— SHA-256-แƒ˜แƒ— แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒแƒฌแƒ”แƒ แƒ— แƒฎแƒ”แƒšแƒก Ed25519 EdDSA แƒ“แƒ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒฎแƒ”แƒšแƒ›แƒแƒฌแƒ”แƒ แƒ signature, แƒ“แƒ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก ID แƒแƒ แƒ˜แƒก SHA-256 แƒฐแƒ”แƒจแƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜.

แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜:

1 โ€” แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ

/**
 * Calls `getBytes` based on transaction type
 * @see privateTypes
 * @implements {ByteBuffer}
 * @param {transaction} trs
 * @param {boolean} skipSignature
 * @param {boolean} skipSecondSignature
 * @return {!Array} Contents as an ArrayBuffer.
 * @throws {error} If buffer fails.
 */

adamant.getBytes = function (transaction) {

  ...

  switch (transaction.type) {
    case constants.Transactions.SEND:
      break
    case constants.Transactions.CHAT_MESSAGE:
      assetBytes = this.chatGetBytes(transaction)
      assetSize = assetBytes.length
      break

โ€ฆ

    default:
      alert('Not supported yet')
  }

  var bb = new ByteBuffer(1 + 4 + 32 + 8 + 8 + 64 + 64 + assetSize, true)

  bb.writeByte(transaction.type)
  bb.writeInt(transaction.timestamp)

  ...

  bb.flip()
  var arrayBuffer = new Uint8Array(bb.toArrayBuffer())
  var buffer = []

  for (var i = 0; i < arrayBuffer.length; i++) {
    buffer[i] = arrayBuffer[i]
  }

  return Buffer.from(buffer)
}

2 - แƒ“แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ”แƒ— SHA-256 แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒ“แƒแƒœ

/**
 * Creates hash based on transaction bytes.
 * @implements {getBytes}
 * @implements {crypto.createHash}
 * @param {transaction} trs
 * @return {hash} sha256 crypto hash
 */
adamant.getHash = function (trs) {
  return crypto.createHash('sha256').update(this.getBytes(trs)).digest()
}

3 โ€” แƒฎแƒ”แƒšแƒ˜ แƒ›แƒแƒแƒฌแƒ”แƒ แƒ”แƒ— แƒ’แƒแƒ แƒ˜แƒ’แƒ”แƒ‘แƒแƒก

adamant.transactionSign = function (trs, keypair) {
  var hash = this.getHash(trs)
  return this.sign(hash, keypair).toString('hex')
}

/**
 * Creates a signature based on a hash and a keypair.
 * @implements {sodium}
 * @param {hash} hash
 * @param {keypair} keypair
 * @return {signature} signature
 */
adamant.sign = function (hash, keypair) {
  return sodium.crypto_sign_detached(hash, Buffer.from(keypair.privateKey, 'hex'))
}

แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜แƒ— แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ™แƒ•แƒแƒœแƒซแƒจแƒ˜

แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒฅแƒกแƒ”แƒšแƒ˜ แƒ“แƒ”แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒฆแƒ˜แƒ API-แƒ˜แƒ— แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก. POST แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒแƒ›แƒ“แƒ” api/transactions:

curl 'api/transactions' -X POST 
  -d 'TX_DATA'

แƒกแƒแƒžแƒแƒกแƒฃแƒฎแƒแƒ“ แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒขแƒ˜แƒžแƒ˜แƒก ID-แƒก

{
    "success": true,
    "nodeTimestamp": 63228852,
    "transactionId": "6146865104403680934"
}

แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒ•แƒแƒšแƒ˜แƒ“แƒแƒชแƒ˜แƒ

แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ, แƒ™แƒแƒœแƒกแƒ”แƒœแƒกแƒฃแƒกแƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”, แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก โ€žแƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ‘แƒแƒกโ€œ. แƒ•แƒ˜แƒกแƒ’แƒแƒœ แƒ“แƒ แƒ•แƒ˜แƒกแƒ’แƒแƒœ, แƒ แƒแƒ“แƒ˜แƒก, แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒ แƒ—แƒฃ แƒแƒ แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒแƒ— แƒ“แƒ แƒกแƒฌแƒแƒ แƒแƒ“ แƒ˜แƒงแƒ แƒ—แƒฃ แƒแƒ แƒ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ“แƒ แƒ. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ - แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ’แƒแƒ“แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒแƒ–แƒ” แƒ“แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜ แƒแƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒงแƒแƒšแƒ‘แƒ“แƒ”แƒก.

แƒฏแƒ”แƒ  แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ”แƒก, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ™แƒ˜ แƒฃแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒกแƒฎแƒ•แƒ”แƒ‘แƒก - แƒ—แƒฃ แƒฃแƒ›แƒ แƒแƒ•แƒšแƒ”แƒกแƒแƒ‘แƒ แƒแƒ›แƒ‘แƒแƒ‘แƒก, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ แƒ˜แƒ’แƒ–แƒ”แƒ, แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ แƒฉแƒแƒ˜แƒ แƒ—แƒ•แƒ”แƒ‘แƒ แƒฏแƒแƒญแƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ‘แƒšแƒแƒ™แƒจแƒ˜ - แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒกแƒ”แƒœแƒกแƒฃแƒกแƒ˜.

แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ“แƒ”แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ”?

แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒแƒ–แƒ”, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— GitHub-แƒ–แƒ” - แƒ•แƒแƒšแƒ˜แƒ“แƒ˜แƒแƒขแƒแƒ แƒ˜.js ะธ แƒ’แƒแƒ“แƒแƒแƒ›แƒแƒฌแƒ›แƒ”แƒ—.js. แƒ“แƒ˜แƒแƒฎ, แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Node.js-แƒ–แƒ”.

แƒ‘แƒšแƒแƒ™แƒจแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ— แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒฉแƒแƒ—แƒ•แƒšแƒ˜แƒ—

แƒ™แƒแƒœแƒกแƒ”แƒœแƒกแƒฃแƒกแƒ˜แƒก แƒ›แƒ˜แƒฆแƒฌแƒ”แƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜แƒ— แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ แƒฉแƒแƒ˜แƒ แƒ—แƒ•แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ‘แƒšแƒแƒ™แƒจแƒ˜ แƒกแƒฎแƒ•แƒ แƒ›แƒแƒฅแƒ›แƒ”แƒ“ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“.

แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒก แƒแƒฅแƒ•แƒ— แƒ›แƒ™แƒแƒชแƒ แƒ˜ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ แƒ“แƒ แƒงแƒแƒ•แƒ”แƒšแƒ˜ แƒ›แƒแƒ›แƒ“แƒ”แƒ•แƒœแƒ แƒ‘แƒšแƒแƒ™แƒ˜ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒฌแƒ˜แƒœแƒ แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒฐแƒ”แƒจแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”.

แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ“แƒ”แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ”?

แƒกแƒแƒฅแƒ›แƒ” แƒ˜แƒกแƒแƒ, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜แƒช แƒจแƒ”แƒ“แƒ˜แƒก แƒแƒ› แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒแƒจแƒ˜ แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ โ€žแƒ’แƒแƒ“แƒแƒฌแƒงแƒแƒ‘แƒโ€œ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ. แƒ—แƒฃ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒฎแƒ•แƒ“แƒ”แƒ‘แƒ แƒ‘แƒšแƒแƒ™แƒจแƒ˜, แƒ›แƒแƒ—แƒ˜ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ timestamp แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜.

แƒ›แƒ”แƒกแƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ

แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ˜แƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜แƒ“แƒแƒœ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒ›แƒ˜แƒ›แƒฆแƒ”แƒ‘แƒ—แƒแƒœ. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ api/chatrooms.

แƒงแƒ•แƒ”แƒšแƒ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒงแƒ•แƒ”แƒšแƒแƒกแƒ—แƒ•แƒ˜แƒก - แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒ˜แƒ›แƒฆแƒ”แƒ‘แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ’แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ แƒ›แƒ˜แƒกแƒ˜ แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ’แƒแƒ›แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒกแƒแƒฏแƒแƒ แƒ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—:

**
 * Decodes the incoming message
 * @param {any} msg encoded message
 * @param {string} senderPublicKey sender public key
 * @param {string} privateKey our private key
 * @param {any} nonce nonce
 * @returns {string}
 */
adamant.decodeMessage = function (msg, senderPublicKey, privateKey, nonce) {
  if (typeof msg === 'string') {
    msg = hexToBytes(msg)
  }

  if (typeof nonce === 'string') {
    nonce = hexToBytes(nonce)
  }

  if (typeof senderPublicKey === 'string') {
    senderPublicKey = hexToBytes(senderPublicKey)
  }

  if (typeof privateKey === 'string') {
    privateKey = hexToBytes(privateKey)
  }

  const DHPublicKey = ed2curve.convertPublicKey(senderPublicKey)
  const DHSecretKey = ed2curve.convertSecretKey(privateKey)
  const decrypted = nacl.box.open(msg, nonce, DHPublicKey, DHSecretKey)

  return decrypted ? decode(decrypted) : ''
}

แฒ“แƒ แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ แƒ?

แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒ› แƒ’แƒ–แƒ˜แƒ— แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 5 แƒฌแƒแƒ›แƒจแƒ˜ - แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ“แƒ แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒแƒฎแƒแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ‘แƒšแƒแƒ™แƒ˜ - แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ— แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ“แƒ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒ“แƒแƒœ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒ˜แƒฆแƒ”แƒ‘แƒก แƒแƒฎแƒแƒš แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒแƒก, แƒ˜แƒก แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก แƒ›แƒ˜แƒก แƒ•แƒแƒšแƒ˜แƒ“แƒแƒ‘แƒแƒก แƒ“แƒ แƒ’แƒแƒ“แƒแƒกแƒชแƒ”แƒ›แƒก แƒ›แƒแƒก แƒกแƒฎแƒ•แƒ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒจแƒ˜. แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒ›แƒ”แƒกแƒ”แƒœแƒฏแƒ”แƒ แƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ™แƒแƒœแƒกแƒ”แƒœแƒกแƒฃแƒกแƒ˜แƒก แƒ›แƒ˜แƒฆแƒฌแƒ”แƒ•แƒแƒ›แƒ“แƒ” แƒ“แƒ แƒ‘แƒšแƒแƒ™แƒจแƒ˜ แƒฉแƒแƒ แƒ—แƒ•แƒแƒ›แƒ“แƒ”แƒช แƒ™แƒ˜. แƒแƒ› แƒ’แƒ–แƒ˜แƒ— แƒฉแƒ•แƒ”แƒœ แƒ›แƒงแƒ˜แƒกแƒ˜แƒ”แƒ แƒแƒ“ แƒ›แƒ˜แƒ•แƒชแƒ”แƒ›แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒก, แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ›แƒงแƒ˜แƒกแƒ˜แƒ”แƒ แƒ˜ แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ”แƒ‘แƒ˜.

แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ— KVS - Key-Value Storage - แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒขแƒ˜แƒžแƒ˜แƒก แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช asset แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก NaCl-แƒ‘แƒแƒฅแƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› NaCl-แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒ แƒงแƒฃแƒ—แƒ˜. แƒแƒกแƒ” แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜ แƒกแƒฎแƒ•แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก.

แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก/แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ แƒ“แƒ แƒฏแƒ’แƒฃแƒคแƒฃแƒ แƒ˜ แƒฉแƒ”แƒ—แƒ”แƒ‘แƒ˜ แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ“แƒ˜แƒ“ แƒจแƒ แƒแƒ›แƒแƒก แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก. แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒ‘แƒฃแƒœแƒ“แƒแƒ•แƒแƒœแƒ˜ แƒ“แƒ แƒ‘แƒฃแƒœแƒ“แƒแƒ•แƒแƒœแƒ˜ แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜ แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ โ€žแƒ’แƒแƒคแƒฃแƒญแƒ“แƒ”แƒกโ€œ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒจแƒ”แƒ•แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒแƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ“แƒ”แƒœแƒชแƒ˜แƒแƒšแƒฃแƒ แƒแƒ‘แƒ˜แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ“แƒแƒœแƒ”.

แƒ“แƒ˜แƒแƒฎ, แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒแƒ แƒ˜แƒก แƒ’แƒแƒกแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ”แƒšแƒ˜ - แƒ˜แƒ“แƒ”แƒแƒšแƒฃแƒ  แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ“แƒ”แƒœแƒชแƒ˜แƒแƒšแƒฃแƒ แƒแƒ‘แƒ แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘แƒก, แƒ แƒแƒ› แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒแƒ  แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ˜แƒแƒœ แƒกแƒแƒฏแƒแƒ แƒ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒก, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒแƒแƒ›แƒแƒฆแƒšแƒ”แƒ‘แƒ”แƒœ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒก. แƒ แƒแƒ’แƒแƒ  แƒคแƒ˜แƒฅแƒ แƒแƒ‘แƒ—, แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒœแƒขแƒ˜ แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒแƒ›แƒแƒก? แƒแƒกแƒ”แƒ, 0. แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒซแƒ”แƒšแƒ˜แƒ— แƒœแƒแƒฌแƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒแƒ› แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ แƒ›แƒ”แƒกแƒ”แƒœแƒฏแƒ”แƒ แƒ˜แƒก Tor แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ—.

แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ—, แƒ แƒแƒ› แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ˜ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ” แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ“แƒ”แƒก. แƒแƒ“แƒ แƒ” 2012 แƒฌแƒ”แƒšแƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ แƒ˜แƒงแƒ - แƒ‘แƒ˜แƒขแƒ›แƒ”แƒกแƒ˜แƒฏแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ•แƒ”แƒ  แƒ›แƒแƒฎแƒ”แƒ แƒฎแƒ“แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒ˜ แƒ“แƒ แƒแƒ˜แƒก, CPU แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ.

แƒ“แƒ แƒกแƒ™แƒ”แƒžแƒขแƒ˜แƒชแƒ˜แƒ–แƒ›แƒ˜ แƒ’แƒแƒœแƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒ—, แƒ แƒแƒ› แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ” แƒ›แƒ”แƒกแƒ˜แƒœแƒฏแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒแƒ–แƒ” แƒฃแƒกแƒฌแƒ แƒ”แƒ‘แƒ”แƒœ - แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒแƒœ แƒ›แƒ–แƒแƒ“ แƒแƒ˜แƒฆแƒแƒœ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ–แƒ”, แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒšแƒแƒ‘แƒ แƒฏแƒ”แƒ  แƒแƒ  แƒแƒ แƒ˜แƒก แƒขแƒ”แƒœแƒ“แƒ”แƒœแƒชแƒ˜แƒ แƒ“แƒ แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒ แƒแƒ  แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ” แƒ›แƒแƒฆแƒแƒš แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ”แƒก. แƒฉแƒ•แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ›แƒ”แƒขแƒ˜ แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒ˜ แƒแƒœแƒแƒšแƒแƒ’แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒจแƒ˜. แฒ“แƒแƒ˜แƒœแƒแƒฎแƒแƒ•แƒ—.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ