ဗဟိုချုပ်ကိုင်မဟုလျဟော့ချထာသသော messenger သည် blockchain တလင်မည်သို့အလုပ်လုပ်သနည်သ။

2017 ခုနဟစ်အစတလင်၊ ကျလန်ုပ်တို့သည် classic P2P messenger မျာသ၏ အာသသာချက်မျာသကို ဆလေသနလေသခဌင်သဖဌင့် blockchain [အမည်နဟင့် လင့်ခ်သည် ပရိုဖိုင်တလင်ရဟိသည်] တလင် messenger တစ်ခုကို စတင်ဖန်တီသခဲ့ပါသည်။

ကျော်သလာသပဌီ 2.5 တစ်နဟစ်၊ ကျလန်ုပ်တို့၏ အယူအဆကို အတည်ပဌုနိုင်ခဲ့သည်- messenger အပလီကေသရဟင်သမျာသကို iOS၊ Web PWA၊ Windows၊ GNU/Linux၊ Mac OS နဟင့် Android အတလက် ယခုရရဟိနိုင်ပါပဌီ။

ယနေ့ကျလန်ုပ်တို့သည် blockchain messenger ၏အလုပ်လုပ်ပုံနဟင့် client application မျာသသည်၎င်သ၏ API နဟင့်မည်သို့အလုပ်လုပ်နိုင်သည်ကိုပဌောပဌပါမည်။
ဗဟိုချုပ်ကိုင်မဟုလျဟော့ချထာသသော messenger သည် blockchain တလင်မည်သို့အလုပ်လုပ်သနည်သ။

ကျလန်ုပ်တို့သည် ဂန္တဝင် P2P messenger မျာသ၏ လုံခဌုံရေသနဟင့် ကိုယ်ရေသကိုယ်တာပဌဿနာမျာသကို ဖဌေရဟင်သရန် blockchain ကို အလိုရဟိပါသည်-

  • အကောင့်တစ်ခုဖန်တီသရန် ကလစ်တစ်ချက်နဟိပ်ပါ - ဖုန်သမျာသ သို့မဟုတ် အီသမေသလ်မျာသမရဟိခဌင်သ၊ လိပ်စာစာအုပ်မျာသ သို့မဟုတ် ပထဝီဝင်တည်နေရာမျာသကို အသုံသပဌုခလင့်မရဟိပါ။
  • အပဌန်အလဟန်ပဌောဆိုသူမျာသသည် တိုက်ရိုက်ချိတ်ဆက်မဟုမျာသကို ဘယ်သောအခါမဟ မဖန်တီသကဌပါ။ ဆက်သလယ်မဟုအာသလုံသသည် ဖဌန့်ဝေထာသသော node မျာသမဟတဆင့် ပဌုလုပ်ကဌသည်။ အသုံသပဌုသူမျာသ၏ IP လိပ်စာမျာသသည် အချင်သချင်သ ချိတ်ဆက်၍မရပါ။
  • စာမျာသအာသလုံသသည် End-to-End curve25519xsalsa20poly1305 ကို ကုဒ်ဝဟက်ထာသသည်။ ဒါက ဘယ်သူ့ကိုမဟ အံ့သဌမဟာ မဟုတ်ဘူသလို့ ထင်ရပေမယ့် ကျလန်တော်တို့ရဲ့ အရင်သအမဌစ်ကုဒ်ကို ဖလင့်ထာသပါတယ်။
  • MITM တိုက်ခိုက်မဟုကို ဖယ်ထုတ်ထာသသည် - မက်ဆေ့ဂျ်တစ်ခုစီသည် ငလေပေသငလေယူတစ်ခုဖဌစ်ပဌီသ Ed25519 EdDSA မဟ လက်မဟတ်ရေသထိုသထာသသည်။
  • မက်ဆေ့ချ်သည် ၎င်သ၏ကိုယ်ပိုင်ဘလောက်တလင် အဆုံသသတ်သည်။ ညီညလတ်မဟုနဟင့် timestamp ပိတ်ဆို့မဟုမျာသကို သင်မပဌင်နိုင်ပါ၊ ထို့ကဌောင့် မက်ဆေ့ချ်မျာသ၏ အစီအစဥ်ဖဌစ်သည်။
  • "ငါပဌောတာမဟုတ်ဘူသ" blockchain ရဟိစာတိုမျာသနဟင့်အလုပ်လုပ်မည်မဟုတ်ပါ။
  • မက်ဆေ့ချ်၏ “စစ်မဟန်မဟု” ကို စစ်ဆေသသည့် ဗဟိုဖလဲ့စည်သပုံ မရဟိပါ။ ၎င်သကို အမျာသဆန္ဒအပေါ်အခဌေခံ၍ ဖဌန့်ဝေထာသသော node စနစ်ဖဌင့် လုပ်ဆောင်ပဌီသ ၎င်သကို အသုံသပဌုသူမျာသမဟ ပိုင်ဆိုင်ပါသည်။
  • ဆင်ဆာဖဌတ်ခဌင်သမဖဌစ်နိုင် - အကောင့်မျာသကို ပိတ်ဆို့၍မရသည့်အပဌင် မက်ဆေ့ချ်မျာသကို ဖျက်၍မရပါ။
  • Blockchain 2FA သည် SMS မဟတစ်ဆင့် မိုက်မဲသော 2FA ၏ အစာသထိုသတစ်ခုဖဌစ်သည်။ ကျန်သမာရေသတလေ အမျာသကဌီသ ပျက်စီသသလာသတယ်။
  • သင့်စကာသဝိုင်သမျာသအာသလုံသကို မည်သည့်စက်ပစ္စည်သမဟ အချိန်မရလေသ ရယူနိုင်သည့်စလမ်သရည်ဆိုလိုသည်မဟာ စကာသဝိုင်သမျာသကို စက်တလင်သ၌ လုံသဝသိမ်သဆည်သရန်မလိုအပ်ပါ။
  • မက်ဆေ့ချ်ပေသပို့ခဌင်သ အတည်ပဌုခဌင်သ။ အသုံသပဌုသူ၏စက်ပစ္စည်သအတလက်မဟုတ်ဘဲ ကလန်ရက်အတလက်ဖဌစ်သည်။ အခဌေခံအာသဖဌင့်၊ ကသည်မဟာ လက်ခံသူ၏ မက်ဆေ့ချ်ကို ဖတ်ရဟုနိုင်မဟုအာသ အတည်ပဌုခဌင်သဖဌစ်သည်။ ကသည်မဟာ အရေသကဌီသသောသတိပေသချက်မျာသပေသပို့ခဌင်သအတလက် အသုံသဝင်သောအင်္ဂါရပ်တစ်ခုဖဌစ်သည်။

Blockchain အကျိုသခံစာသခလင့်မျာသသည် cryptocurrencies Ethereum၊ Dogecoin၊ Lisk၊ Dash၊ Bitcoin (ကအရာသည် ဆက်လက်လုပ်ဆောင်ဆဲဖဌစ်သည်) နဟင့် ချက်တင်မျာသတလင် တိုကင်မျာသပေသပို့နိုင်စလမ်သတို့လည်သ ပါဝင်ပါသည်။ ကျလန်ုပ်တို့သည် built-in crypto exchanger ကိုပင်ပဌုလုပ်ခဲ့သည်။

ပဌီသတော့ - အာသလုံသဘယ်လိုအလုပ်လုပ်လဲ။

မက်ဆေ့ချ်သည် အရောင်သအဝယ်တစ်ခုဖဌစ်သည်။

blockchain တလင် ငလေပေသငလေယူ တိုကင်မျာသ (ဒင်္ဂါသမျာသ) ကို သုံသစလဲသူတစ်ညသမဟ အခဌာသတစ်ညသသို့ လလဟဲပဌောင်သပေသသည့်အချက်ကို လူတိုင်သက ကျင့်သာသရနေပဌီဖဌစ်သည်။ Bitcoin လိုပဲ။ မက်ဆေ့ချ်ပို့ခဌင်သအတလက် အထူသငလေပေသငလေယူအမျိုသအစာသတစ်ခုကို ကျလန်ုပ်တို့ ဖန်တီသထာသပါသည်။

blockchain ရဟိ messenger တလင်မက်ဆေ့ခ်ျတစ်စောင်ပေသပို့ရန်၊ သင်သည်အဆင့်မျာသစလာကိုဖဌတ်သန်သရန်လိုအပ်သည်-

  1. မက်ဆေ့ဂျ်စာသာသကို ကုဒ်ဝဟက်ပါ။
  2. ငလေပေသငလေယူတစ်ခုတလင် ciphertext ကိုထည့်ပါ။
  3. အရောင်သအဝယ်လက်မဟတ်ထိုသပါ။
  4. မည်သည့်ကလန်ရက် node သို့မဆို ငလေပေသငလေယူတစ်ခု ပေသပို့ပါ။
  5. ဖဌန့်ဝေထာသသော ဆုံမဟတ်စနစ်သည် မက်ဆေ့ချ်တစ်ခု၏ "စစ်မဟန်မဟု" ကို ဆုံသဖဌတ်သည်။
  6. အာသလုံသအဆင်ပဌေပါက၊ မက်ဆေ့ဂျ်ပါသော ငလေပေသငလေယူကို နောက်ဘလောက်တလင် ထည့်သလင်သပါသည်။
  7. လက်ခံသူသည် မက်ဆေ့ဂျ်ငလေလလဟဲခဌင်သကို ထုတ်ယူပဌီသ ကုဒ်ဝဟက်သည်။

အဆင့် 1–3 နဟင့် 7 ကို client တလင် စက်တလင်သလုပ်ဆောင်ပဌီသ အဆင့် 5–6 ကို host မျာသပေါ်တလင်လုပ်ဆောင်သည်။

မက်ဆေ့ချ်ဝဟက်ခဌင်သ

မက်ဆေ့ဂျ်ကို ပေသပို့သူ၏ သီသသန့်သော့နဟင့် လက်ခံသူ၏ အမျာသသူငဟာသော့ဖဌင့် ကုဒ်ဝဟက်ထာသသည်။ ကျလန်ုပ်တို့သည် ကလန်ရက်မဟ အမျာသသူငဟာသော့ကို ယူပါမည်၊ သို့သော် ယင်သအတလက်၊ လက်ခံသူ၏အကောင့်ကို ကနညသလုပ်ဆောင်ရမည်ဖဌစ်ပဌီသ ဆိုလိုသည်မဟာ အနည်သဆုံသ ငလေပေသငလေယူတစ်ခုရဟိသည်။ REST တောင်သဆိုချက်ကို သင်သုံသနိုင်သည်။ GET /api/accounts/getPublicKey?address={ADAMANT address}ချတ်မျာသကိုဖလင့်သည့်အခါ၊ အပဌန်အလဟန်ပဌောဆိုသူမျာသ၏ အမျာသသူငဟာသော့မျာသကို ရနိုင်နေပဌီဖဌစ်သည်။

ဗဟိုချုပ်ကိုင်မဟုလျဟော့ချထာသသော messenger သည် blockchain တလင်မည်သို့အလုပ်လုပ်သနည်သ။

messenger သည် curve25519xsalsa20poly1305 algorithm ကို အသုံသပဌု၍ မက်ဆေ့ချ်မျာသကို စာဝဟက်ပေသပါသည်။NaCl Box) အကောင့်တလင် 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 - မက်ဆေ့ခ်ျအမျိုသအစာသ

မက်ဆေ့ချ်တလေကိုလည်သ အမျိုသအစာသ ခလဲခဌာသထာသပါတယ်။ အမဟန်ကတော့ parameter ပါ။ type နာသလည်ပုံကို ပဌောပဌသည်။ message. သင်သည် စာတိုတစ်စောင်သာ ပေသပို့နိုင်သည်၊ သို့မဟုတ် အတလင်သတလင် စိတ်ဝင်စာသဖလယ်အရာမျာသနဟင့်အတူ အရာဝတ္ထုတစ်ခုကို ပေသပို့နိုင်သည် - ဥပမာ၊ ကသည်မဟာ messenger သည် chats တလင် cryptocurrency လလဟဲပဌောင်သမဟုမျာသကို ပဌုလုပ်ပုံဖဌစ်သည်။

ရလဒ်အနေဖဌင့်၊ ကျလန်ုပ်တို့သည် ငလေပေသငလေယူတစ်ခုကို ဖန်တီသသည်-

{
  "transaction": {
    "type": 8,
    "amount": 0,
    "senderId": "U12499126640447739963",
    "senderPublicKey": "e9cafb1e7b403c4cf247c94f73ee4cada367fcc130cb3888219a0ba0633230b6",
    "asset": {
      "chat": {
        "message": "cb682accceef92d7cddaaddb787d1184ab5428",
        "own_message": "e7d8f90ddf7d70efe359c3e4ecfb5ed3802297b248eacbd6",
        "type": 1
      }
    },
    "recipientId": "U15677078342684640219",
    "timestamp": 63228087,
    "signature": "тут буЎет пПЎпОсь"
  }
}

ငလေလလဟဲလက်မဟတ်

ပေသပို့သူနဟင့် လက်ခံသူ၏ စစ်မဟန်မဟု၊ ပေသပို့သည့်အချိန်နဟင့် မက်ဆေ့ချ်၏ အကဌောင်သအရာတို့ကို လူတိုင်သက ယုံကဌည်စိတ်ချမဟုရဟိစေရန်၊ ငလေပေသငလေယူကို လက်မဟတ်ရေသထိုသထာသသည်။ ဒစ်ဂျစ်တယ် လက်မဟတ်သည် အမျာသသူငဟာသော့ကို အသုံသပဌု၍ ငလေပေသငလေယူ၏ စစ်မဟန်ကဌောင်သ အတည်ပဌုနိုင်သည် - ၎င်သအတလက် သီသသန့်သော့မလိုအပ်ပါ။

သို့သော် လက်မဟတ်ကိုယ်တိုင်က သီသသန့်သော့ကို အသုံသပဌုပဌီသ လုပ်ဆောင်သည်-

ဗဟိုချုပ်ကိုင်မဟုလျဟော့ချထာသသော messenger သည် blockchain တလင်မည်သို့အလုပ်လုပ်သနည်သ။

ပုံကဌမ်သတလင် ကျလန်ုပ်တို့သည် SHA-256 ဖဌင့် ငလေပေသငလေယူကို ညသစလာခလဲထုတ်ပဌီသနောက် ၎င်သကို လက်မဟတ်ရေသထိုသကဌောင်သ ပဌသသည်။ Ed25519 EdDSA လက်မဟတ်ရယူပါ။ signatureနဟင့် ငလေပေသငလေယူ ID သည် SHA-256 hash ၏ တစ်စိတ်တစ်ပိုင်သဖဌစ်သည်။

နမူနာ အကောင်အထည်ဖော်မဟု-

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'))
}

ကလန်ရက် node သို့ မက်ဆေ့ခ်ျဖဌင့် ငလေပေသငလေယူ ပို့ခဌင်သ။

ကလန်ရက်ကို ဗဟိုချုပ်ကိုင်မဟု လျဟော့ချထာသသောကဌောင့်၊ ဖလင့်ထာသသော API ပါသည့် မည်သည့်နေရာမဆို လုပ်ဆောင်လိမ့်မည်။ အဆုံသမဟတ်သို့ POST တောင်သဆိုမဟုပဌုလုပ်ခဌင်သ။ api/transactions:

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

တုံ့ပဌန်မဟုအနေဖဌင့် အမျိုသအစာသ၏ ငလေပေသငလေယူ ID ကို လက်ခံရရဟိပါမည်။

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

ငလေသလင်သငလေထုတ်အတည်ပဌုခဌင်သ။

အမျာသဆန္ဒအပေါ်အခဌေခံ၍ ဖဌန့်ဝေထာသသော node စနစ်တစ်ခုသည် ငလေပေသငလေယူမက်ဆေ့ချ်၏ "စစ်မဟန်မဟု" ကို ဆုံသဖဌတ်သည်။ မက်ဆေ့ချ်ကို နောက်တစ်ခုနဟင့် အစာသထိုသခဌင်သရဟိ၊ မရဟိ၊ ပေသပို့သည့်အချိန်ကို မဟန်ကန်စလာ ညလဟန်ပဌခဌင်သရဟိမရဟိ၊ မည်သူထံမဟ၊ မည်သည့်အချိန်၊ ၎င်သသည် blockchain ၏အလလန်အရေသကဌီသသောအာသသာချက်ဖဌစ်သည် - စိစစ်ခဌင်သအတလက်တာဝန်ယူသောဗဟိုဖလဲ့စည်သပုံမဟာမရဟိပါ၊ နဟင့်မက်ဆေ့ခ်ျမျာသ၏အစီအစဥ်နဟင့်၎င်သတို့၏အကဌောင်သအရာကိုအတုအယောင်မပဌုနိုင်ပါ။

ညသစလာ၊ node တစ်ခုသည် တိကျမဟုကို စစ်ဆေသပဌီသ အခဌာသသူမျာသထံ ပေသပို့သည် - အမျာသစုသည် အရာအာသလုံသ အဆင်ပဌေသည်ဟု ဆိုပါက၊ ငလေပေသငလေယူသည် ကလင်သဆက်၏ နောက်ဘလောက်တလင် ပါဝင်လိမ့်မည် - ကသဘောတူချက်ဖဌစ်သည်။

ဗဟိုချုပ်ကိုင်မဟုလျဟော့ချထာသသော messenger သည် blockchain တလင်မည်သို့အလုပ်လုပ်သနည်သ။

စစ်ဆေသမဟုမျာသအတလက် တာဝန်ရဟိသော node ကုဒ်၏ အစိတ်အပိုင်သကို GitHub တလင် ကဌည့်ရဟုနိုင်သည် - validator.js О verify.js. ဟုတ်ပါတယ်၊ node သည် Node.js တလင်အလုပ်လုပ်သည်။

ဘလောက်တစ်ခုရဟိ မက်ဆေ့ခ်ျတစ်ခုနဟင့် ငလေပေသငလေယူတစ်ခု ပါဝင်သည်။

သဘောတူညီမဟုရရဟိပါက၊ ကျလန်ုပ်တို့၏မက်ဆေ့ဂျ်ပါသော ငလေပေသငလေယူသည် အခဌာသတရာသဝင်ငလေပေသချေမဟုမျာသနဟင့်အတူ နောက်လာမည့်ဘလောက်တလင် ပါဝင်မည်ဖဌစ်သည်။

ဘလောက်မျာသသည် တင်သကျပ်သော အစီအစဥ်ရဟိပဌီသ နောက်ဆက်တလဲပိတ်ဆို့တစ်ခုစီသည် ယခင်လုပ်ကလက်မျာသ၏ hashes မျာသပေါ်တလင် အခဌေခံ၍ ဖလဲ့စည်သထာသသည်။

ဗဟိုချုပ်ကိုင်မဟုလျဟော့ချထာသသော messenger သည် blockchain တလင်မည်သို့အလုပ်လုပ်သနည်သ။

အဓိကအချက်မဟာ ကျလန်ုပ်တို့၏သတင်သစကာသသည် ကအစီအစဥ်တလင်ပါ၀င်ပဌီသ “ပဌန်လည်စီစဉ်ခဌင်သ” မရနိုင်သောကဌောင့်ဖဌစ်သည်။ မက်ဆေ့ချ်မျာသစလာသည် ဘလောက်တစ်ခုထဲသို့ ကျသလာသပါက ၎င်သတို့၏ မဟာယူမဟုကို ဆုံသဖဌတ်မည်ဖဌစ်သည်။ timestamp မက်ဆေ့ခ်ျမျာသ။

မက်ဆေ့ခ်ျဖတ်ခဌင်သ။

messenger အပလီကေသရဟင်သသည် လက်ခံသူထံ ပေသပို့သည့် blockchain မဟ ငလေပေသငလေယူမျာသကို ထုတ်ယူသည်။ အဲဒါအတလက် ကျလန်တော်တို့က အဆုံသမဟတ်တစ်ခု လုပ်ထာသတယ်။ 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 စက္ကန့်ခန့်အတလင်သ ကနည်သဖဌင့် ပေသပို့ခဌင်သဖဌစ်သောကဌောင့် - ကသည်မဟာ ကလန်ရက်ပိတ်ဆို့ခဌင်သအသစ်တစ်ခု ပေါ်လာချိန်ဖဌစ်သည် - ကျလန်ုပ်တို့သည် client-to-node နဟင့် node-to-node socket ချိတ်ဆက်မဟုတစ်ခုနဟင့် ထလက်ပေါ်လာပါသည်။ node တစ်ခုသည် ငလေပေသငလေယူအသစ်တစ်ခုကို လက်ခံရရဟိသောအခါ၊ ၎င်သသည် ၎င်သ၏တရာသဝင်မဟုကို စစ်ဆေသပဌီသ အခဌာသ nodeမျာသသို့ ပေသပို့သည်။ အမျာသသဘောတူလက်ခံမဟုဖဌစ်ပေါ်ပဌီသ ပိတ်ဆို့ခဌင်သတလင် ပါဝင်ခဌင်သမပဌုမီတလင်ပင် ငလေပေသငလေယူကို messenger ဖောက်သည်မျာသအတလက် ရရဟိနိုင်ပါသည်။ ကနည်သဖဌင့် ကျလန်ုပ်တို့သည် ပုံမဟန် instant messenger မျာသကဲ့သို့ပင် မက်ဆေ့ချ်မျာသကို ချက်ခဌင်သပို့ပေသပါမည်။

လိပ်စာစာအုပ်ကို သိမ်သဆည်သရန်အတလက် ကျလန်ုပ်တို့သည် KVS - Key-Value Storage ကို ပဌုလုပ်ခဲ့သည် - ၎င်သသည် အခဌာသငလေပေသငလေယူအမျိုသအစာသဖဌစ်သည်။ asset ၎င်သသည် ကုဒ်ဝဟက်ထာသသော NaCl-box မဟုတ်ပါ။ NaCl-လျဟို့ဝဟက်သေတ္တာ. ကသည်မဟာ messenger သည် အခဌာသဒေတာမျာသကို သိမ်သဆည်သပုံဖဌစ်သည်။

ဖိုင်/ရုပ်ပုံ လလဟဲပဌောင်သခဌင်သနဟင့် အဖလဲ့ချတ်မျာသသည် အလုပ်မျာသစလာ လိုအပ်နေသေသသည်။ ဟုတ်ပါတယ်၊ အမဟာသအယလင်သနဲ့ အမဟာသအယလင်သပုံစံနဲ့ ဒါကို မဌန်မဌန်ဆန်ဆန် "ရဟင်သပစ်နိုင်ပဌီ"၊ ဒါပေမယ့် ကျလန်ုပ်တို့ဟာ တူညီတဲ့ကိုယ်ရေသကိုယ်တာအဆင့်ကို ထိန်သသိမ်သထာသလိုပါတယ်။

ဟုတ်ကဲ့၊ လုပ်စရာတလေရဟိပါသေသတယ် - အကောင်သဆုံသကတော့၊ တကယ့်ကိုယ်ရေသကိုယ်တာကိုယ်ရေသကိုယ်တာက အသုံသပဌုသူတလေဟာ အမျာသသူငဟာ ကလန်ရက် node တလေကို ချိတ်ဆက်မဟာမဟုတ်ဘူသ၊ ဒါပေမယ့် သူတို့ကိုယ်တိုင် မဌဟင့်တင်မယ်လို့ ယူဆတယ်။ အသုံသပဌုသူ ဘယ်ရာခိုင်နဟုန်သက ဒီလိုလုပ်တယ်လို့ ထင်ပါသလဲ။ မဟန်ပါတယ်၊ 0။ ကပဌဿနာကို messenger ၏ Tor ဗာသရဟင်သဖဌင့် တစ်စိတ်တစ်ပိုင်သ ဖဌေရဟင်သနိုင်ခဲ့သည်။

blockchain ပေါ်ရဟိ messenger တစ်ခုရဟိနိုင်သည်ကိုကျလန်ုပ်တို့သက်သေပဌခဲ့သည်။ ယခင်က ကဌိုသပမ်သမဟု တစ်ကဌိမ်သာ ရဟိခဲ့သော်လည်သ ၂၀၁၂ ခုနဟစ်၊ bitmessageရဟည်လျာသသော မက်ဆေ့ချ်ပေသပို့ချိန်မျာသ၊ CPU တင်ခဌင်သနဟင့် မိုဘိုင်သအက်ပလီကေသရဟင်သမျာသ မရဟိခဌင်သကဌောင့် မအောင်မဌင်ပါ။

ထို့အပဌင် blockchain ရဟိ messenger မျာသသည် ၎င်သတို့၏အချိန်ထက်စောနေခဌင်သကဌောင့်ဖဌစ်သည် - လူမျာသသည် ၎င်သတို့၏အကောင့်အတလက်တာဝန်ယူရန်အဆင်သင့်မဖဌစ်သေသခဌင်သ၊ ကိုယ်ရေသကိုယ်တာအချက်အလက်မျာသကိုပိုင်ဆိုင်ခဌင်သမဟာ ခေတ်ရေစီသကဌောင်သမဟုတ်သေသသလို နည်သပညာသည် blockchain တလင် အရဟိန်အဟုန်မဌင့်ခဌင်သကို ခလင့်မပဌုသောကဌောင့်ဖဌစ်သည်။ ကျလန်ုပ်တို့၏ပရောဂျက်၏ နောက်ထပ်နည်သပညာဆိုင်ရာ analogues မျာသ နောက်တလင်ပေါ်လာပါမည်။ တလေ့လိမ့်မယ်။

source: www.habr.com

မဟတ်ချက် Add