เดฌเตเดฒเต‹เด•เตเด•เตเดšเต†เดฏเดฟเดจเดฟเดฒเต† เด’เดฐเต เดตเดฟเด•เต‡เดจเตเดฆเตเดฐเต€เด•เตƒเดค เดฎเต†เดธเดžเตเดšเตผ เดŽเด™เตเด™เดจเต†เดฏเดพเดฃเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต?

2017-เดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ, เด•เตเดฒเดพเดธเดฟเด•เต P2P เดฎเต†เดธเดžเตเดšเดฑเตเด•เดณเต‡เด•เตเด•เดพเตพ เด—เตเดฃเด™เตเด™เตพ เดšเตผเดšเตเดš เดšเต†เดฏเตเดคเตเด•เตŠเดฃเตเดŸเต เดฌเตเดฒเต‹เด•เตเด•เตเดšเต†เดฏเดฟเดจเดฟเตฝ [เดชเต‡เดฐเตเด‚ เดฒเดฟเด™เตเด•เตเด‚ เดชเตเดฐเตŠเดซเตˆเดฒเดฟเตฝ เด‰เดฃเตเดŸเต] เดžเด™เตเด™เตพ เด’เดฐเต เดฎเต†เดธเดžเตเดšเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดฟ.

เด•เดŸเดจเตเดจเตเดชเต‡เดพเดฏเดฟ 2.5 เดตเตผเดทเด‚, เดžเด™เตเด™เดณเตเดŸเต† เด†เดถเดฏเด‚ เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดžเตเดžเต: iOS, Web PWA, Windows, GNU/Linux, Mac OS, Android เดŽเดจเตเดจเดฟเดตเดฏเตโ€Œเด•เตเด•เต เด‡เดชเตเดชเต‹เตพ เดฎเต†เดธเดžเตเดšเตผ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดฒเดญเตเดฏเดฎเดพเดฃเต.

เดฌเตเดฒเต‹เด•เตเด•เตโ€Œเดšเต†เดฏเดฟเตป เดฎเต†เดธเดžเตเดšเตผ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเตเด‚ เด•เตเดฒเดฏเดจเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เต เด…เดคเดฟเดจเตเดฑเต† API เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด‡เดจเตเดจเต เดžเด™เตเด™เตพ เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดชเดฑเดฏเตเด‚.
เดฌเตเดฒเต‹เด•เตเด•เตเดšเต†เดฏเดฟเดจเดฟเดฒเต† เด’เดฐเต เดตเดฟเด•เต‡เดจเตเดฆเตเดฐเต€เด•เตƒเดค เดฎเต†เดธเดžเตเดšเตผ เดŽเด™เตเด™เดจเต†เดฏเดพเดฃเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต?

เด•เตเดฒเดพเดธเดฟเด•เต P2P เดฎเต†เดธเดžเตเดšเดฑเตเด•เดณเตเดŸเต† เดธเตเดฐเด•เตเดทเดพ, เดธเตเดตเด•เดพเดฐเตเดฏเดค เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เตพ เดฌเตเดฒเต‹เด•เตเด•เตโ€Œเดšเต†เดฏเดฟเตป เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเดšเตเดšเต:

  • เด’เดฐเต เด…เด•เตเด•เต—เดฃเตเดŸเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเตป เด’เดฑเตเดฑ เด•เตเดฒเดฟเด•เตเด•เต - เดซเต‹เดฃเตเด•เดณเต‹ เด‡เดฎเต†เดฏเดฟเดฒเตเด•เดณเต‹ เด‡เดฒเตเดฒ, เดตเดฟเดฒเดพเดธ เดชเตเดธเตโ€Œเดคเด•เด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต‹ เดœเดฟเดฏเต‹เดฒเตŠเด•เตเด•เต‡เดทเดจเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต‹ เดชเตเดฐเดตเต‡เดถเดจเดฎเดฟเดฒเตเดฒ.
  • เด‡เดจเตเดฑเตผเดฒเต‹เด•เตเด•เตเดŸเตเดŸเตผเดฎเดพเตผ เด’เดฐเดฟเด•เตเด•เดฒเตเด‚ เดจเต‡เดฐเดฟเดŸเตเดŸเตเดณเตเดณ เด•เดฃเด•เตเดทเดจเตเด•เตพ เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ; เดŽเดฒเตเดฒเดพ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด™เตเด™เดณเตเด‚ เดจเต‹เดกเตเด•เดณเตเดŸเต† เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดค เดธเด‚เดตเดฟเดงเดพเดจเดคเตเดคเดฟเดฒเต‚เดŸเต†เดฏเดพเดฃเต เดจเดŸเด•เตเด•เตเดจเตเดจเดคเต. เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดŸเต† IP เดตเดฟเดฒเดพเดธเด™เตเด™เตพ เดชเดฐเดธเตเดชเดฐเด‚ เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.
  • เดŽเดฒเตเดฒเดพ เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเตเด‚ เดŽเตปเดกเต-เดŸเต-เดŽเตปเดกเต เด•เตผเดตเต25519xsalsa20poly1305 เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เด†เดฐเต†เดฏเตเด‚ เด…เดคเตเดญเตเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฒเตเดฒเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดžเด™เตเด™เดณเตเดŸเต† เดธเต‹เดดเตเดธเต เด•เต‹เดกเต เดคเตเดฑเดจเตเดจเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.
  • MITM เด†เด•เตเดฐเดฎเดฃเด‚ เด’เดดเดฟเดตเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต - เด“เดฐเต‹ เดธเดจเตเดฆเต‡เดถเดตเตเด‚ เด’เดฐเต เด‡เดŸเดชเดพเดŸเดพเดฃเต, เด’เดชเตเดชเดฟเดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต Ed25519 EdDSA เด†เดฃเต.
  • เดธเดจเตเดฆเต‡เดถเด‚ เด…เดคเดฟเดจเตเดฑเต† เดธเตเดตเดจเตเดคเด‚ เดฌเตเดฒเต‹เด•เตเด•เดฟเตฝ เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเดจเตเดจเต. เดธเตเดฅเดฟเดฐเดคเดฏเตเด‚ timestamp เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฌเตเดฒเต‹เด•เตเด•เตเด•เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเตเดŸเต† เด•เตเดฐเดฎเด‚.
  • "เดžเดพเตป เด…เดคเต เดชเดฑเดžเตเดžเดฟเดฒเตเดฒ" เดŽเดจเตเดจเดคเต เดฌเตเดฒเต‹เด•เตเด•เตเดšเต†เดฏเดฟเดจเดฟเดฒเต† เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฟเดฒเตเดฒ.
  • เด’เดฐเต เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดจเตเดฑเต† "เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค" เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด•เต‡เดจเตเดฆเตเดฐ เด˜เดŸเดจเดฏเตเด‚ เด‡เดฒเตเดฒ. เดธเดฎเดตเดพเดฏเดคเตเดคเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดจเต‹เดกเตเด•เดณเตเดŸเต† เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดค เดธเด‚เดตเดฟเดงเดพเดจเดฎเดพเดฃเต เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต, เด‡เดคเต เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดŸเต† เด‰เดŸเดฎเดธเตเดฅเดคเดฏเดฟเดฒเตเดณเตเดณเดคเดพเดฃเต.
  • เดธเต†เตปเดธเตผเดทเดฟเดชเตเดชเดฟเดจเตเดฑเต† เด…เดธเดพเดงเตเดฏเดค - เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เตพ เดคเดŸเดฏเดพเดจเตเด‚ เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.
  • เดŽเดธเตเดŽเด‚เดŽเดธเต เดตเดดเดฟเดฏเตเดณเตเดณ เดจเดฐเด•เดคเตเดฒเตเดฏเดฎเดพเดฏ 2FA เดฏเตเด•เตเด•เต เดชเด•เดฐเดฎเดพเดฃเต เดฌเตเดฒเต‹เด•เตเด•เตเดšเต†เดฏเดฟเตป 2FA, เด’เดฐเตเดชเดพเดŸเต เด†เดฐเต‹เด—เตเดฏเด‚ เดจเดถเดฟเดชเตเดชเดฟเดšเตเดšเต.
  • เดจเดฟเด™เตเด™เดณเตเดŸเต† เดŽเดฒเตเดฒเดพ เดธเด‚เดญเดพเดทเดฃเด™เตเด™เดณเตเด‚ เดเดคเต เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดŽเดชเตเดชเต‹เตพ เดตเต‡เดฃเดฎเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเต‡เดŸเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเด™เตเด™เตพ เดธเด‚เดญเดพเดทเดฃเด™เตเด™เตพ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดธเด‚เดญเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ เดŽเดจเตเดจเดพเดฃเต.
  • เดธเดจเตเดฆเต‡เดถ เดตเดฟเดคเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฃเด‚. เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต† เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เดฒเตเดฒ, เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดฒเต‡เด•เตเด•เดพเดฃเต. เด…เดŸเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ, เด‡เดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเดจเตเดฆเต‡เดถเด‚ เดตเดพเดฏเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดธเตเดตเต€เด•เตผเดคเตเดคเดพเดตเดฟเดจเตเดฑเต† เด•เดดเดฟเดตเดฟเดจเตเดฑเต† เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฃเดฎเดพเดฃเต. เดจเดฟเตผเดฃเดพเดฏเด• เด…เดฑเดฟเดฏเดฟเดชเตเดชเตเด•เตพ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดธเดตเดฟเดถเต‡เดทเดคเดฏเดพเดฃเดฟเดคเต.

เด•เตเดฐเดฟเดชเตโ€Œเดฑเตเดฑเต‹เด•เดฑเตปเดธเดฟเด•เดณเดพเดฏ 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 เด†เดฏเดฟ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเดฃเด‚.

เดœเดพเดตเดพเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดฒเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‡เดคเดพ:

/**
 * 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, เด‡เดŸเดชเดพเดŸเต เดเดกเดฟ 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'

เดชเตเดฐเดคเดฟเด•เดฐเดฃเดฎเดพเดฏเดฟ เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเตเดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด’เดฐเต เด‡เดŸเดชเดพเดŸเต เดเดกเดฟ เดฒเดญเดฟเด•เตเด•เตเด‚

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

เด‡เดŸเดชเดพเดŸเต เดฎเต‚เดฒเตเดฏเดจเดฟเตผเดฃเตเดฃเดฏเด‚

เดธเดฎเดตเดพเดฏเดคเตเดคเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเตฝ เดจเต‹เดกเตเด•เดณเตเดŸเต† เด’เดฐเต เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดค เดธเดฟเดธเตเดฑเตเดฑเด‚, เด‡เดŸเดชเดพเดŸเต เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดจเตเดฑเต† "เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค" เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเต. เด†เดฐเดฟเตฝ เดจเดฟเดจเตเดจเต, เด†เตผเด•เตเด•เต, เดŽเดชเตเดชเต‹เตพ, เดธเดจเตเดฆเต‡เดถเด‚ เดฎเดฑเตเดฑเตŠเดจเตเดจเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹, เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจ เดธเดฎเดฏเด‚ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹. เด‡เดคเต เดฌเตเดฒเต‹เด•เตเด•เตโ€Œเดšเต†เดฏเดฟเดจเดฟเดจเตเดฑเต† เดตเดณเดฐเต† เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เด’เดฐเต เดจเต‡เดŸเตเดŸเดฎเดพเดฃเต - เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเต เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดฏเดพเดฏ เด’เดฐเต เด•เต‡เดจเตเดฆเตเดฐ เด˜เดŸเดจเดฏเตเด‚ เด‡เดฒเตเดฒ, เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเตเดŸเต† เด•เตเดฐเดฎเดตเตเด‚ เด…เดตเดฏเตเดŸเต† เด‰เดณเตเดณเดŸเด•เตเด•เดตเตเด‚ เดตเตเดฏเดพเดœเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.

เด†เดฆเตเดฏเด‚, เด’เดฐเต เดจเต‹เดกเต เด•เตƒเดคเตเดฏเดค เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เด…เดคเต เดฎเดฑเตเดฑเตเดณเตเดณเดตเตผเด•เตเด•เต เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเต - เดŽเดฒเตเดฒเดพเด‚ เด•เตเดฐเดฎเดคเตเดคเดฟเดฒเดพเดฃเต†เดจเตเดจเต เดญเต‚เดฐเดฟเดชเด•เตเดทเด‚ เดชเดฑเดžเตเดžเดพเตฝ, เด‡เดŸเดชเดพเดŸเต เดšเต†เดฏเดฟเดจเดฟเดจเตเดฑเต† เด…เดŸเตเดคเตเดค เดฌเตเดฒเต‹เด•เตเด•เดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเตเด‚ - เด‡เดคเต เดธเดฎเดตเดพเดฏเดฎเดพเดฃเต.

เดฌเตเดฒเต‹เด•เตเด•เตเดšเต†เดฏเดฟเดจเดฟเดฒเต† เด’เดฐเต เดตเดฟเด•เต‡เดจเตเดฆเตเดฐเต€เด•เตƒเดค เดฎเต†เดธเดžเตเดšเตผ เดŽเด™เตเด™เดจเต†เดฏเดพเดฃเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต?

เดชเดฐเดฟเดถเต‹เดงเดจเด•เตพเด•เตเด•เต เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดฏเดพเดฏ เดจเต‹เดกเต เด•เต‹เดกเดฟเดจเตเดฑเต† เดญเดพเด—เด‚ GitHub-เตฝ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚ - Validator.js ะธ verify.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 เดธเต†เด•เตเด•เตปเดกเดฟเดจเตเดณเตเดณเดฟเตฝ เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เดˆ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดกเต†เดฒเดฟเดตเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ - เด’เดฐเต เดชเตเดคเดฟเดฏ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดฌเตเดฒเต‹เด•เตเด•เต เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเดจเตเดจ เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต - เดžเด™เตเด™เตพ เด’เดฐเต เด•เตเดฒเดฏเดจเตเดฑเต-เดŸเต-เดจเต‹เดกเต, เดจเต‹เดกเต-เดŸเต-เดจเต‹เดกเต เดธเต‹เด•เตเด•เดฑเตเดฑเต เด•เดฃเด•เตเดทเดจเตเดฎเดพเดฏเดฟ เดŽเดคเตเดคเดฟ. เด’เดฐเต เดจเต‹เดกเดฟเดจเต เด’เดฐเต เดชเตเดคเดฟเดฏ เด‡เดŸเดชเดพเดŸเต เดฒเดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดคเต เด…เดคเดฟเดจเตเดฑเต† เดธเดพเดงเตเดค เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดฎเดฑเตเดฑเต เดจเต‹เดกเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดธเดฎเดตเดพเดฏเด‚ เด‰เดฃเตเดŸเดพเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดฌเตเดฒเต‹เด•เตเด•เดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เดฎเตเดฎเตเดชเตเดคเดจเตเดจเต† เด‡เดŸเดชเดพเดŸเต เดฎเต†เดธเดžเตเดšเตผ เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพเด•เตเด•เต เดฒเดญเตเดฏเดฎเดพเดฃเต. เด‡เดคเตเดตเดดเดฟ เดธเดพเดงเดพเดฐเดฃ เดคเตฝเด•เตเดทเดฃ เดธเดจเตเดฆเต‡เดถเดตเดพเดนเด•เดฐเต† เดชเต‹เดฒเต† เดžเด™เตเด™เตพ เดคเตฝเด•เตเดทเดฃเด‚ เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เด•เตˆเดฎเดพเดฑเตเด‚.

เดตเดฟเดฒเดพเดธ เดชเตเดธเตเดคเด•เด‚ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เด•เต†เดตเดฟเดŽเดธเต เด‰เดฃเตเดŸเดพเด•เตเด•เดฟ - เด•เต€-เดตเดพเดฒเตเดฏเต‚ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต - เด‡เดคเต เดฎเดฑเตเดฑเตŠเดฐเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด‡เดŸเดชเดพเดŸเดพเดฃเต. asset เด‡เดคเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต NaCl-box เด…เดฒเตเดฒ, เดฎเดฑเดฟเดšเตเดšเต NaCl-เดฐเดนเดธเตเดฏเดชเตเดชเต†เดŸเตเดŸเดฟ. เด‡เด™เตเด™เดจเต†เดฏเดพเดฃเต เดฎเต†เดธเดžเตเดšเตผ เดฎเดฑเตเดฑเต เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต.

เดซเดฏเตฝ/เดšเดฟเดคเตเดฐ เด•เตˆเดฎเดพเดฑเตเดฑเด™เตเด™เตพเด•เตเด•เตเด‚ เด—เตเดฐเต‚เดชเตเดชเต เดšเดพเดฑเตเดฑเตเด•เตพเด•เตเด•เตเด‚ เด‡เดชเตเดชเต‹เดดเตเด‚ เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดœเต‹เดฒเดฟ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดฌเตเดฒเดฃเตเดŸเตผ เด†เตปเดกเต เดฌเตเดฒเดฃเตเดŸเตผ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เด‡เดคเต เดชเต†เดŸเตเดŸเต†เดจเตเดจเต "เดธเตเด•เตเดฐเต€เดกเต เด…เดชเตเดชเต" เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚, เดŽเดจเตเดจเดพเตฝ เด…เดคเต‡ เดจเดฟเดฒเดตเดพเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดธเตเดตเด•เดพเดฐเตเดฏเดค เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดคเต†, เด‡เดจเดฟเดฏเตเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเดฃเตเดŸเต - เดฏเดฅเดพเตผเดคเตเดฅ เดธเตเดตเด•เดพเดฐเตเดฏเดค เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ เดชเตŠเดคเต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดจเต‹เดกเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด…เดตเดฐเตเดŸเต‡เดคเต เด‰เดฏเตผเดคเตเดคเตเด‚. เดŽเดคเตเดฐ เดถเดคเดฎเดพเดจเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเดพเดฃเต เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด•เดฐเตเดคเตเดจเตเดจเต? เด…เดคเต เดถเดฐเดฟเดฏเดพเดฃเต, 0. เดฎเต†เดธเดžเตเดšเดฑเดฟเดจเตเดฑเต† เดŸเต‹เตผ เดชเดคเดฟเดชเตเดชเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดˆ เดชเตเดฐเดถเตเดจเด‚ เดญเดพเด—เดฟเด•เดฎเดพเดฏเดฟ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดžเตเดžเต.

เดฌเตเดฒเต‹เด•เตเด•เตเดšเต†เดฏเดฟเดจเดฟเตฝ เด’เดฐเต เดฎเต†เดธเดžเตเดšเตผ เดจเดฟเดฒเดจเดฟเตฝเด•เตเด•เตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดคเต†เดณเดฟเดฏเดฟเดšเตเดšเต. เดฎเตเดฎเตเดชเต, 2012 เตฝ เด’เดฐเต เดถเตเดฐเดฎเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเตเดณเตเดณเต‚ - เดฌเดฟเดฑเตเดฑเตเดฎเต†เดธเต‡เดœเต, เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏ เดธเดจเตเดฆเต‡เดถ เดตเดฟเดคเดฐเดฃ เดธเดฎเดฏเด‚, เดธเดฟเดชเดฟเดฏเต เดฒเต‹เดกเต, เดฎเตŠเดฌเตˆเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเดŸเต† เด…เดญเดพเดตเด‚ เดŽเดจเตเดจเดฟเดต เด•เดพเดฐเดฃเด‚ เด‡เดคเต เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเดŸเต.

เดฌเตเดฒเต‹เด•เตเด•เตโ€Œเดšเต†เดฏเดฟเดจเดฟเดฒเต† เดธเดจเตเดฆเต‡เดถเดตเดพเดนเด•เตผ เด…เดตเดฐเตเดŸเต† เดธเดฎเดฏเดคเตเดคเดฟเดจเต เดฎเตเดจเตเดจเดฟเดฒเดพเดฃเต†เดจเตเดจ เดตเดธเตเดคเตเดคเดฏเดพเดฃเต เดธเด‚เดถเดฏเดคเตเดคเดฟเดจเต เด•เดพเดฐเดฃเด‚ - เด†เดณเตเด•เตพ เด…เดตเดฐเตเดŸเต† เด…เด•เตเด•เต—เดฃเตเดŸเดฟเดจเตเดฑเต† เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเด‚ เดเดฑเตเดฑเต†เดŸเตเด•เตเด•เดพเตป เดคเดฏเตเดฏเดพเดฑเดฒเตเดฒ, เดตเตเดฏเด•เตเดคเดฟเด—เดค เดตเดฟเดตเดฐเด™เตเด™เตพ เดธเตเดตเดจเตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เด‡เดคเตเดตเดฐเต† เด’เดฐเต เดชเตเดฐเดตเดฃเดคเดฏเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏ เดฌเตเดฒเต‹เด•เตเด•เตเดšเต†เดฏเดฟเดจเดฟเตฝ เด‰เดฏเตผเดจเตเดจ เดตเต‡เด—เดค เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เด•เต‚เดŸเตเดคเตฝ เดธเดพเด™เตเด•เต‡เดคเดฟเด• เด…เดจเดฒเต‹เด—เตเด•เตพ เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเด‚. เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•