Skip to content

RAM-LFE

RAM-LFE ለዘፈቀደ መዳረሻ ማሽን ላኮኒክ ተግባር ግምገማ ማለት ነው ። በ Iroha ውስጥ ፣ የህዝብ ፖሊሲው በሰንሰለት ላይ ለሚገኙ ፕሮግራሞች አጠቃላይ የተደበቀ ተግባር ንብርብር ነው ነገር ግን ገምጋሚ ሎጂካቸው ፣ ምስጢራዊነታቸው ወይም ጥሬ ግብአታቸው ለዓለም መንግስት መፃፍ የለባቸውም ። እንደ የግል ስልክ ወይም የኢሜል ፍለጋ በመሳሰሉ SORA Nexus መታወቂያ ዥረቶች ጥቅም ላይ ይውላል ፣ እና የአውታር መገለጫ የመተግበሪያ-ተኮር መንገዶችን በሚፈቅድበት ጊዜ እንደ አጠቃላይ Torii የፕሮግራም አፈፃፀም ረዳት ሆኖ ሊገለጽ ይችላል።

ሰንሰለቱ የፖሊሲ ግዴታ እና ደረሰኝ ማረጋገጫ ሜታዳታዎችን ያከማቻል ። አንድ መፍትሄ ወይም Torii ሩጫ ጊዜ የተደበቀውን ፕሮግራም ይገመግማል ፣ የሚፈቀደውን ውፅዓት ብቻ ይመልሳል ፣ እና ደንበኞች ፣ የድጋፍ መሳሪያዎች ወይም መቁጠሪያ መመሪያዎች ከተመዘገቡት ፖሊሲዎች ጋር ሊያረጋግጡ የሚችሉበትን ደረሰኝ ይያዛል ።

ስም መስጠት

የስም ማከፋፈል አስፈላጊ ነው:

የጊዜ ገደብትርጉም
ram_lfeውጫዊው የተደበቀ ተግባር አጠቃቀም: የፕሮግራም ፖሊሲዎች, ግዴታዎች, የማስፈጸሚያ ደረሰኞች እና ደረሰኝ ማረጋገጫ ሁነታ.
BFVበ RAM-LFE የተመሰጠረ የመግቢያ የጀርባ ገጽታዎች ጥቅም ላይ የሚውለው Brakerski/Fan-Vercauteren homomorphic encryption scheme።
ram_fhe_profileBFV ለፕሮግራም የተሰራው የተመሰጠረ አፈፃፀም ማሽን ልዩ ሜታዳታ ነው። ይህ ለ RAM-LFE ሁለተኛ ስም አይደለም ።

በውሂብ ሞዴሉ ውስጥ RamLfeProgramPolicy እና RamLfeExecutionReceipt የ RAM-LFE ዓይነቶች ናቸው ። BFV መለኪያዎች ፣ የምስጠራ ጽሑፍ ፖስታዎች እና የተደበቀው RAM-FHE ፕሮግራም መገለጫ በፖሊሲ ጥቅም ላይ በሚውለው የተመሰጠረ አፈፃፀም ጀርባ ነው ።

መጽሐፍ ቅዱስ ምን ይላል?

የ RAM-LFE ፕሮግራም ፖሊሲ በዓለም አቀፍ ደረጃ በ program_id ተመዝግቧል። ፖሊሲው የሚከተሉትን ያካትታል:

  • ፖሊሲውን ማግበር፣ ማሰናከል ወይም በሌላ መንገድ መቀየር የሚችል የባለቤትነት መለያ
  • ለደንበኞች የሚስተዋወቀው የጀርባ መጨረሻ
  • የምስክር ወረቀት ማረጋገጫ ዘዴ signed ወይም proof
  • የተደበቀ የፕሮግራም ሜታዳታ እና የምርመራ ሚስጥራዊነት ተሳትፎ
  • ለተፈረሙ ደረሰኞች መፍትሄ ያለው የህዝብ ቁልፍ
  • እንደ BFV መለኪያዎች እና ram_fhe_profile ያሉ አማራጭ የህዝብ ምስጠራ የመግቢያ ሜታዳታ
  • ፖሊሲው አዲስ ደረሰኞችን ማተም አለመቻሉን የሚቆጣጠር የ active ባንዲራ

የተደበቀ ሚስጥር, ግልጽ ጽሑፍ መታወቂያ ዋጋ እና የተደበቁ የፕሮግራም አካል በዓለም ሁኔታ ውስጥ አይከማቹም. ደንበኞች ግዴታዎች, ግልጽ ያልሆኑ ሃሽዎች, ደረሰኝ ሀሽዎች, ምስጢራዊ ጽሑፎች, እና የፕሮጀክት ዲጂስቶች እንደ ግልጽ ያልሆኑ ፕሮቶኮል እሴቶች መያዝ አለባቸው.

የኋላ ታሪክ

የአሁኑ RAM-LFE ድጋፍ በሶስት የጀርባ መለያዎች ላይ ያተኮረ ነው:

የኋላ ገጽአጠቃቀም
hkdf-sha3-512-prf-v1PRF የተዋጣለት ግምገማ።
bfv-affine-sha3-256-v1በ BFV የተደገፈ ምስጢራዊ አፊን ግምገማ በተመሰጠረ መታወቂያ ክፍሎች ላይ።
bfv-programmed-sha3-256-v1በ BFV የተደገፈ የፕሮግራም አፈፃፀም በዲጂታል መዝገቦች እና በማስታወሻ መስመሮች ላይ።

ለታወቂያ ፖሊሲዎች, የፕሮግራም BFV ጀርባ አስፈላጊ ዘመናዊ መንገድ ነው. ይህም ቦርሳዎች አካባቢያዊ መደበኛ ግብዓት እንዲመሰክሩ ያስችላቸዋል, በግብይት ውስጥ የህዝብ መታወቂያ ሳይታይ መፍቻው ለመገምገም ያስችላል, እንዲሁም የውጤቱን ሃሽ ከተመዘገበው የፕሮግራም ፖሊሲ ጋር የሚያገናኝ ደረሰኝ ይመልሳል።

የሂሳብ

ይህ ክፍል የአሁኑ RAM-LFE ኮድ የሚጠቀመውን የአተገባበር ደረጃ አልጀብራን ይገልጻል። ይህ የደህንነት ማስረጃ አይደለም ፣ ፖሊሲዎች ፣ ደረሰኞች እና ደንበኞች መስማማት ያለባቸው የዴትሪሚኒስት ትራንስክሪፕትና ምስጠራ-ግምገማ ሞዴል ነው ።

ማስታወሻ

ያድርጉ:

  • (H(m)) መሆን Iroha Hash::new(m): Blake2b-32 ተጠናቅቋል m, በመጨረሻው ባይት ውስጥ በጣም አነስተኛውን ጉልህ ክፍል 1.
  • (N(x)) የ x ቀኖናዊ Norito ኮድ መሆን አለበት.
  • (a \parallel b) ማለትም የባይት ገመድ አገናኝ.
  • {(\operatorname{le64}(i) ) ያልተፈረመ ሙሉ ቁጥር የ 8-ባይት ትንሽ-ኢንዲያን ኢንኮዲንግ መሆን.
  • (s) ከዓለም ግዛት ውጭ የተያዘው ሚስጥር መፍትሔ ይሆናል.
  • (P) የህዝብ ፖሊሲ መለኪያዎች መሆን አለባቸው።
  • (A) ጋር የተያያዙ መረጃዎችን መጠየቅ.
  • (x) መደበኛ የግብዓት ባይቶች ወይም Norito-የተመሰጠረ ኢንቨስትመንት ፖስታ, በጀርባ ላይ በመመርኮዝ ሊሆን ይችላል.

RAM-LFE የጎራ-የተለዩ ሃሽዎችን ይጠቀማል። ከዚህ በታች ያሉት ቀመሮች ጎራዎቹን እንደ ዓላማው ይጠቅሳሉ ፣ የአሁኑ ባይት ሰንሰለቶች የሚከተሉት ናቸው:

ምልክትየጎራ ሰንጠረዥ
(D_{\mathrm{policy}})iroha.ram_lfe.policy.hkdf_sha3_512_prf.v1
(D_{\mathrm{secret}})iroha.ram_lfe.policy_secret.hkdf_sha3_512_prf.v1
(D_{\mathrm{salt}})iroha.ram_lfe.hkdf_salt.hkdf_sha3_512_prf.v1
(D_{\mathrm{hkdf_opaque}})iroha.ram_lfe.opaque_info.hkdf_sha3_512_prf.v1
(D_{\mathrm{hkdf_receipt}})iroha.ram_lfe.receipt_info.hkdf_sha3_512_prf.v1
(D_{\mathrm{opaque}})iroha.ram_lfe.opaque_hash.hkdf_sha3_512_prf.v1
(D_{\mathrm{receipt}})iroha.ram_lfe.receipt_hash.hkdf_sha3_512_prf.v1
(D_{\mathrm{affine_circuit}})iroha.ram_lfe.bfv_affine.circuit.v1
(D_{\mathrm{affine_opaque}})iroha.ram_lfe.bfv_affine.opaque_hash.v1
(D_{\mathrm{affine_receipt}})iroha.ram_lfe.bfv_affine.receipt_hash.v1
(D_{\mathrm{program_memory}})iroha.ram_lfe.bfv_program.memory.v1
(D_{\mathrm{program_opaque}})iroha.ram_lfe.bfv_program.opaque_hash.v1
(D_{\mathrm{program_receipt}})iroha.ram_lfe.bfv_program.receipt_hash.v1
(D_{\mathrm{program_digest}})iroha.ram_lfe.bfv_program.digest.v1
(D_{\mathrm{output}})iroha.ram_lfe.output_hash.v1
(D_{\mathrm{id_opaque}})iroha.ram_lfe.identifier.opaque_hash.v1
(D_{\mathrm{id_receipt}})iroha.ram_lfe.identifier.receipt_hash.v1
(D_{\mathrm{bfv_keygen}})iroha.crypto.fhe.bfv.keygen.v1
(D_{\mathrm{bfv_encrypt}})iroha.crypto.fhe.bfv.encrypt.v1
(D_{\mathrm{id_keygen}})iroha.crypto.fhe.bfv.identifier.keygen.v1
(D_{\mathrm{id_slot}})iroha.crypto.fhe.bfv.identifier.slot.v1

የፖሊሲ ቁርጠኝነት

የፖሊሲ ግዴታ የህዝብ መለኪያዎችን እና የተደበቀውን መፍትሄ ሚስጥር ከጀርባው ጋር ያገናኛል ። በመጀመሪያ ፣ ሚስጥሩ በተናጠል ይፈጸማል

Cs=H(Dsecrets) C_s = H(D_{\mathrm{secret}} \parallel s)

ከዚያ የፖሊሲው ሙሉ ትራንስክሪፕት ይከፈታል:

Tpolicy=N(backend,P,Cs) T_{\mathrm{policy}} = N(\mathrm{backend}, P, C_s)

እና የታተመው ፖሊሲ ሃሽ የሚከተለው ነው:

policy_hash=H(DpolicyTpolicy) \mathrm{policy\_hash} = H(D_{\mathrm{policy}} \parallel T_{\mathrm{policy}})

በሰንሰለት ላይ ያለው PolicyCommitment፡-

(backend,policy_hash,P) (\mathrm{backend}, \mathrm{policy\_hash}, P)

ግምገማው ከሩጫ ጊዜ ሚስጥር ተመሳሳይ እሴት እንደገና ያስከፍላል ። እንደገና የተሰረዘ ሃሽ ከተለያየ ፣ ግምገማው በውሳኔ አለመጣጣም ይወድቃል።

HKDF-SHA3-512 የኋላ ኋላ

hkdf-sha3-512-prf-v1 የውጤቱ መደበኛ የሆነ ግብዓት ራሱ ነው ፣ ግን ግልጽ ያልሆነ መታወቂያ እና ደረሰኝ ሃሽ ምስጢራዊ የተገደቡ PRF ውፅኢቶች ናቸው።

የጥያቄው ትራንስክሪፕት:

Treq=N(policy_hash,P,A,x) T_{\mathrm{req}} = N(\mathrm{policy\_hash}, P, A, x)

የ HKDF ጨው እና የስለ-አጋጣሚ ቁልፍ የሚከተሉት ናቸው:

salt=Dsaltpolicy_hash \mathrm{salt} = D_{\mathrm{salt}} \parallel \mathrm{policy\_hash}

PRK=HKDF-ExtractSHA3-512(salt,s) \mathrm{PRK} = \operatorname{HKDF\text{-}Extract}_{\mathrm{SHA3\text{-}512}} (\mathrm{salt}, s)

ግልፅ ያልሆነ ቁሳቁስ ይስፋፋል እና ይከፈላል:

mo=HKDF-ExpandSHA3-512(PRK,Dhkdf_opaqueTreq,32) m_o = \operatorname{HKDF\text{-}Expand}_{\mathrm{SHA3\text{-}512}} (\mathrm{PRK}, D_{\mathrm{hkdf\_opaque}} \parallel T_{\mathrm{req}}, 32)

opaque_id=H(Dopaquemo) \mathrm{opaque\_id} = H(D_{\mathrm{opaque}} \parallel m_o)

የምስክር ወረቀት ቁሳቁስ በተጨማሪም ግልጽ ያልሆነውን መታወቂያ ይያዛል

mr=HKDF-ExpandSHA3-512(PRK,Dhkdf_receiptTreqopaque_id,32) m_r = \operatorname{HKDF\text{-}Expand}_{\mathrm{SHA3\text{-}512}} (\mathrm{PRK}, D_{\mathrm{hkdf\_receipt}} \parallel T_{\mathrm{req}} \parallel \mathrm{opaque\_id}, 32)

receipt_hash=H(Dreceiptmropaque_id) \mathrm{receipt\_hash} = H(D_{\mathrm{receipt}} \parallel m_r \parallel \mathrm{opaque\_id})

የጀርባው መልዕክት እንዲህ ይላል:

(output,opaque_id,receipt_hash)=(x,opaque_id,receipt_hash) (\mathrm{output}, \mathrm{opaque\_id}, \mathrm{receipt\_hash}) = (x, \mathrm{opaque\_id}, \mathrm{receipt\_hash})

BFV ማስቀመጫ

BFV በገመድ ላይ የተመሠረተ ሆሞሞርፊክ ምስጠራ መርሃግብር ነው ። "ሆሞሞርፍ" ማለት አንድ ፕሮግራም የተመሰጠረ እሴቶችን ማከል እና ማባዛት የሚችል ሲሆን ከስርቆቱ በኋላ በቀላል ጽሑፍ እሴቶች ላይ ተጨማሪዎችን እና ማባዛትን ካከናወነ በኋላ ተመሳሳይ ውጤት ሊያገኝ ይችላል ማለት ነው።

ለ RAM-LFE ፣ BFV እንደ የተመሰጠረ የመግቢያ ዘዴ ጥቅም ላይ ይውላል-

  1. የኪስ ቦርሳ እንደ ስልክ ቁጥር ወይም የኢሜይል አድራሻ ያሉ የግል እሴቶችን መደበኛ ያደርገዋል ።
  2. የኪስ ቦርሳው ባይቶችን ወደ ትናንሽ የተሟላ ቁጥር ክፍተቶች ይለውጣል።
  3. እያንዳንዱ ማስገቢያ በፈቺው BFV የህዝብ ቁልፍ ጋር የተመሰጠረ ነው.
  4. የመፍትሄ ሰጪው የሂደት ጊዜ የተደበቀውን ፕሮግራም በእነዚያ ምስጢራዊ ጽሑፎች ላይ ይገመግማል ።
  5. ሩጫው ጊዜ የተደበቀውን የፕሮግራም ውፅዓት እና ምልክቶችን ብቻ ይገልጻል ወይም ደረሰኝን ያረጋግጣል ።

BFV ትክክለኛ የተሟላ ቁጥር አሪምቴቲክ ነው, በግምት አይደለም. ለዚህም ነው ለመለየት ባይት እና ለትንሽ ሞጁል ወደ ተንሳፋፊ ነጥብ ሞዴል መደምደሚያ ይልቅ ስሌቶች. Iroha የአሁኑ BFV አጠቃቀም, እያንዳንዱ የተመሰጠረ ማስገቢያ አንድ ስካላር ዋጋ ሞዱሎ ይዟል (t), አብዛኛውን ጊዜ አንድ ባይት ወይም ባይት ርዝመት መስክ. (q). መካከል ያለው ክፍተት (q) እና (t) ምስጠራ እና ሆሞሞርፊክ ሥራዎች ለሚያመጣው ጫጫታ የስርጭት ክፍተት ይሰጣል.

የ BFV ቁልፍ ጽሑፍ ሁለት ፖሊኖሚያዊ ክፍሎች አሉት:

c=(c0,c1) c=(c_0,c_1)

ምስጢራዊ ቁልፉ ሌላ ፖሊኖሚያል (s_k) ነው። ዲክሪፕት የሚከተሉትን አካላት ያጣምራል-

v=c0+c1sk v = c_0 + c_1s_k

የዲጂታል ጽሑፍ በትክክል ከተፈጠረ እና ጩኸቱ አሁንም ትንሽ ከሆነ, (v) ወደ ሚዛናዊ ቀላል ጽሑፍ ቅርብ ነው. ማሽከርከር የድጂታል ንጥረ ነገር ሞዱሎ (t)ን መልሶ ያገኛል. ጠቃሚው ባህሪ የዲጂታዊ ጽሑፍ ስራዎች ይህንን መዋቅር ያቆማሉ:

ቀላል አሠራርየቁልፍ ጽሑፍ ተግባር
(m+n)የቁልፍ ጽሑፍ ክፍሎችን ይጨምሩ።
(m+\alpha)ወደ (c_0) ውስጥ የተለካ የጽድቅ ጽሑፍ ቋሚ ይጨምሩ.
(\alpha m)በ (\alpha) የሁለቱም ቁልፍ ጽሑፍ ክፍሎች ይለካሉ.
(mn)የቁልፍ ጽሑፍ ፖሊኖሚዮችን ይጨምሩ፣ እንደገና ይለካሉ፣ ከዚያም እንደገና ያመቻቹ።

ማባዛት ውድ የሆነ ተግባር ነው። ከሁለት ሁለት አካላት የኮምፒተር ፅሁፎች አንድ ምርት በተፈጥሮ በ (1), (s_k) እና (s_k^2) የሚከፍት ባለሶስት አካላት ኮምፒተር ጽሁፍ ይፈጥራል. Relinearization (s_k^2) የሚለውን ቃል ወደ መደበኛ ባለ ሁለት አካላት የኮምፒተር ጽሑፍ ለመመለስ የታተመ የግምገማ ቁልፍን ይጠቀማል ። ይህም ተመሳሳይ የኮምፒዩተር ጽሑፍ ቅርፅ በመጠቀም በኋላ ላይ ተጨማሪዎችን እና ማባዛት ይጠብቃል ።

BFV እንዲሁ "ደረጃ" ነው: እያንዳንዱ የተመሰጠረ ክዋኔ የተወሰነ የጩኸት በጀት ይጠቀማል. ይህ ትግበራ ያንን በጀት ለማዘመን የ ciphertexts ን አይጀምርም ። በምትኩ ፣ RAM-LFE አንድ ትንሽ ram_fhe_profile ያወጣል እና የተገደበ የተደበቀ ፕሮግራም ቅርፅ ብቻ ይቀበላል ። የአሁኑ የፕሮግራም መገለጫ ቋሚ የምዝገባ ቆጠራን ፣ ቋሚ ማህደረ ትውስታ-መንገድ ቆጠራን እና በፕሮግራሙ ደረጃ ላይ ከፍተኛውን አንድ የ ciphertext-ciphertext ማባዛት ያስችላል።

በዚህ RAM-LFE ዲዛይን ውስጥ, BFV የደንበኞችን ግብዓት ከህዝብ መቁጠሪያ ውሂብ እና የትራንስክሽኑን ወይም የመንገድ ጥቅማጥቅሞችን ብቻ ከሚመለከቱ ታዛቢዎች ይደብቃል. ይህ ማለት ሰንሰለት በራሱ የዘፈቀደ የተመሰጠረ ፕሮግራሞችን ያካሂዳል ማለት አይደለም. Torii resolver runtime አሁንም የ BFV ምስጢራዊ ቁሳቁስ ይይዛል ፣ የተዋቀረውን የተደበቀ ፕሮግራም ይገመግማል ፣ የተፈቀደውን ውፅዓት ይገልጻል ፣ እና ውጤቱን ያረጋግጣል ። መቁጠሪያው ከዚያ በሰንሰለት ፖሊሲ ግዴታ ላይ ያለውን ማረጋገጫ ያረጋግጣል እና የህዝብ ቁልፍ ወይም የማረጋገጫ ሜታዳታ ይፈርሳል ።

የማጣሪያ አጠቃቀም ጉዳይ አንድን ቀላል ውክልና ሆን ብሎ ይመርጣል. መደበኛ የሆነ ሰንሰለት እንደሚከተለው ይሰጠራል:

text
[length, byte_0, byte_1, ..., byte_n, 0, 0, ...]

እያንዳንዱ ንጥረ ነገር እንደ የራሱ BFV ስካላር ምስጠራ ጽሑፍ ተመዝግቧል ። ይህ ቅርፅ መደበኛነት እና የ envelope ማረጋገጫ ግልፅ ያደርገዋል ፣ ቦርሳዎች ከህዝባዊ መለኪያዎች የተመሰጠረ ጥያቄዎችን እንዲገነቡ ያስችላቸዋል ፣ እናም መፍትሄ ሰጪው ተመጣጣኝ የሆኑ የተመሰጠሩ ግብዓቶችን ወደ ተረጋጋ ደረሰኝ ትራንስክሪፕት እንዲያስተላልፍ ያስችለዋል።

BFV ቀለበት ሞዴል

የ BFV ጀርባዎች ነጋሳይክሊክ ፖሊኖሚያል ቀለበት ይጠቀማሉ:

Rq=Zq[X]/(Xn+1) R_q = \mathbb{Z}_q[X] / (X^n + 1)

እና ቀላል ጽሑፍ ቀለበት:

Rt=Zt[X]/(Xn+1) R_t = \mathbb{Z}_t[X] / (X^n + 1)

የት:

  • (n) ነው polynomial_degree, የሁለት ኃይል
  • (q) ነው ciphertext_modulus
  • (t) ነው plaintext_modulus
  • (q > t) እና (t \mid q)
  • (\Delta = q/t)
  • (B = 2^{\mathrm{decomposition_base_log}})

የጽሁፍ ክፍፍል ቬክተሮች እያንዳንዳቸውን ክፍሎች በመለኪያ በማስመዝገብ ይከፈታሉ

EncPlain(m)i=Δmimodq \operatorname{EncPlain}(m)_i = \Delta m_i \bmod q

የዴክሪፕሽን ማዕከል-ሊፍት እያንዳንዱን ጠቋሚ ይከፍላል:

v=c0+c1skRq v = c_0 + c_1 s_k \in R_q

ከዚያም ወደ (R_t) ይዞራል:

Dec(c)i=tcenterq(vi)qmodt \operatorname{Dec}(c)_i = \left\lfloor \frac{t \cdot \operatorname{center}_q(v_i)}{q} \right\rceil \bmod t

እዚህ . (s_k) ነው BFV ምስጢራዊ ቁልፍ ፖሊኖሚያል እንጂ ውጫዊው አይደለም RAM-LFE መፍትሄ ሚስጥር (s).

BFV ቁልፍ ትውልድ

ለተመሰጠረ መታወቂያ ግብዓት BFV ቁልፍ ቁሳቁስ በፈቺው ምስጢራዊ እና ተጓዳኝ መረጃ መሠረት የተወሰነ ነው-

σid=H(Did_keygenAs) \sigma_{\mathrm{id}} = H(D_{\mathrm{id\_keygen}} \parallel A \parallel s)

BFV RNG እንደሚከተለው ይተከላል

ChaCha20Rng(H(Dbfv_keygenσid)) \operatorname{ChaCha20Rng}(H(D_{\mathrm{bfv\_keygen}} \parallel \sigma_{\mathrm{id}}))

ቁልፍ ማመንጫዎች ናሙናዎች:

  • (s_k \in {-1,0,1}^n), የተወከለው modulo (q)
  • (a \leftarrow R_q) አንድ አይነት
  • (e \in {-1,0,1}^n)

የሕዝብ ቁልፍ፡-

pk=(b,a),b=aske(modq) \mathrm{pk}=(b,a),\qquad b = -a s_k - e \pmod q

ለ relinearization, (s_k^2) በ (R_q) ውስጥ ያለው ቀለበት ምርት ይሁን. ለእያንዳንዱ የመሠረት-(B) ዲጂት (j), ከትንሽ ስርጭቱ አንድ ዓይነት ናሙና (a_j) እና (e_j) ይተግብሩ, ከዚያም ያወጣሉ:

rlkj=(bj,aj),bj=ajskej+Bjsk2(modq) \mathrm{rlk}_j=(b_j,a_j),\qquad b_j = -a_j s_k - e_j + B^j s_k^2 \pmod q

የህዝብ BFV ፖሊሲ ሜታዳታ (((n,q,t,B)), የሕዝብ ቁልፍ, እና max_input_bytes ይዟል. የ BFV ምስጢራዊ ቁልፍ እና relinearization ቁልፍ በመፍትሄ ጊዜ ውስጥ ይቆያሉ.

BFV ምስጠራ እና ስራዎች

አንድ ቀላል ጽሑፍ ፖሊኖሚየልን (m) ለመሰየም ፣ ትግበራው ከሌላ ChaCha20 RNG ጋር ይዘርፋል ከ:

H(Dbfv_encryptseed) H(D_{\mathrm{bfv\_encrypt}} \parallel \mathrm{seed})

(u,e_1,e_2 \in {-1,0,1}^n) ናሙናዎችን ይይዛል እና ይሰበስባል:

c0=bu+e1+EncPlain(m)(modq) c_0 = b u + e_1 + \operatorname{EncPlain}(m) \pmod q

c1=au+e2(modq) c_1 = a u + e_2 \pmod q

የቁልፍ ጽሑፍ (c=(c_0,c_1)\ ነው) ።

የሆሞሞርፊክ መጨመር በኮምፒዩተሮች ላይ የተመሠረተ ነው

c+d=(c0+d0, c1+d1)(modq) c+d=(c_0+d_0,\ c_1+d_1)\pmod q

የጽኑ ጽሑፍ ስካላር (\alpha) ን ወደ ጥምርተኛው ዜሮ ለውጥ ብቻ (c_0) መጨመር:

c+α=(c0+Δα, c1)(modq) c+\alpha = (c_0 + \Delta\alpha,\ c_1)\pmod q

በቀላል ጽሑፍ ስካላር (\alpha) በማባዛት ሁለቱንም አካላት ይለካሉ-

αc=(αc0, αc1)(modq) \alpha c = (\alpha c_0,\ \alpha c_1)\pmod q

ለሁለት ምስጠራ ጽሑፎች (c=(c _0,c_1)) እና (d=(d_0,d_1)), የሳይበር ጽሑፍ ማባዛት በመጀመሪያ የሦስት መጠን ያለው የሳይበር ጽሁፍ ያሰላል እና እያንዳንዱን ረቂቅ ወደ ኋላ በ (t/q):

c~0=t(c0d0)qmodq \tilde c_0 = \left\lfloor \frac{t(c_0 d_0)}{q} \right\rceil \bmod q

c~1=t(c0d1+c1d0)qmodq \tilde c_1 = \left\lfloor \frac{t(c_0 d_1 + c_1 d_0)}{q} \right\rceil \bmod q

c~2=t(c1d1)qmodq \tilde c_2 = \left\lfloor \frac{t(c_1 d_1)}{q} \right\rceil \bmod q

ከላይ ያሉት ሁሉም ምርቶች በ (R_q) ውስጥ የነጋሳይክሊክ ቀለበት ምርቶች ናቸው ። ከዚያ (\tilde c_2) ወደ መሰረታዊ-(B) ፖሊኖሚሎች ይከፈላል

c~2=jBjuj \tilde c_2 = \sum_j B^j u_j

እና እንደገና ተዘርዝሯል:

c0=c~0+jujbj(modq) c'_0 = \tilde c_0 + \sum_j u_j b_j \pmod q

c1=c~1+jujaj(modq) c'_1 = \tilde c_1 + \sum_j u_j a_j \pmod q

ውጤቱ ደግሞ የሁለት አካላት BFV ቁልፍ ጽሑፍ ነው።

መታወቂያ የቁልፍ ጽሑፍ ፖስታ

የመለየት ማስገቢያ ባይት ገመድ:

x=(x0,,x1) x=(x_0,\ldots,x_{\ell-1})

በስካላር ክፍተቶች ውስጥ ይከፈታል:

m0= m_0 = \ell

mi+1=xi,0i< m_{i+1}=x_i,\qquad 0 \le i < \ell

እና የቀሩት ክፍተቶች በሙሉ እስከ max_input_bytes + 1 ድረስ ዜሮ ናቸው ። እያንዳንዱ የስካላር ክፍተት እንደ የቁጥር-ዜሮ ቀላል ጽሑፍ ፖሊኖሚል ([m_i]) ተመዝግቧል ። በአንድ ክፍት ምስጠራ ዘር የሚከተለው ነው

σi=H(Did_slotseedle64(i)) \sigma_i = H(D_{\mathrm{id\_slot}} \parallel \mathrm{seed} \parallel \operatorname{le64}(i))

የተከፈተው መታወቂያ ፖስታ የሚከተለው ነው

(BFV.Encpk([m0];σ0),,BFV.Encpk([mM];σM)) (\operatorname{BFV.Enc}_{\mathrm{pk}}([m_0];\sigma_0),\ldots, \operatorname{BFV.Enc}_{\mathrm{pk}}([m_M];\sigma_M))

የት (M=\mathrm{max_input_bytes}).

BFV አፋይን ዳግመኛ

bfv-affine-sha3-256-v1, የ ሩጫ ጊዜ በመጀመሪያ የሚመነጭ BFV ቁልፍ ቁሳቁስ (s) እና (A). የተገኙት የህዝብ መለኪያዎች በሰንሰለት ላይ ከተፈጸሙት የህዝብ መመዘኛዎች ጋር በትክክል ሊዛመዱ ይገባል.

የአፍፊን ወረዳ ዘር፡-

σaffine=H(Daffine_circuitspolicy_hashA) \sigma_{\mathrm{affine}} = H(D_{\mathrm{affine\_circuit}} \parallel s \parallel \mathrm{policy\_hash} \parallel A)

ከዚህ ዘር የሩጫ ጊዜ ናሙናዎች, modulo (t), 32 ረድፍ አፊን ወረዳ:

yj=bj+iwj,imi(modt),0j<32 y_j = b_j + \sum_i w_{j,i} m_i \pmod t, \qquad 0 \le j < 32

(m_i) የተከፈቱት የማጣሪያ ክፍተቶች ናቸው። በሆሞሞርፊክ ሁኔታ ተመሳሳይ ዋጋን በኮምፒተር ጽሑፎች ላይ ይሰላል-

Cj=bj+iwj,iCi C_j = b_j + \sum_i w_{j,i} C_i

መፍትሄ ሰጪው እያንዳንዱን (C_j) ይገልጻል ፣ ሁሉም ቀጣይ የጽድቅ ጽሑፍ ጠቋሚዎች ዜሮ እንዲሆኑ ይጠይቃል ፣ ጠቋሚ-ዜሮ እሴቶችን ወደ ባይት ይቀይረዋል ፣ እና ቅርጾች:

O=(y0,,y31) O=(y_0,\ldots,y_{31})

ከዚያም:

opaque_id=H(Daffine_opaquepolicy_hashO) \mathrm{opaque\_id} = H(D_{\mathrm{affine\_opaque}} \parallel \mathrm{policy\_hash} \parallel O)

receipt_hash=H(Daffine_receiptpolicy_hashOopaque_id) \mathrm{receipt\_hash} = H(D_{\mathrm{affine\_receipt}} \parallel \mathrm{policy\_hash} \parallel O \parallel \mathrm{opaque\_id})

BFV በፕሮግራም የተሰራ የጀርባ አወጣጥ

bfv-programmed-sha3-256-v1 የህዝብ መለኪያዎች የ BFV መታወቂያ ምስጠራ መለኪያዎችን እና የተደበቀ ፕሮግራም ዲጀስት ያካትታሉ:

program_digest=H(Dprogram_digestN(program)) \mathrm{program\_digest} = H(D_{\mathrm{program\_digest}} \parallel N(\mathrm{program}))

የአሁኑ RAM-FHE መገለጫ፡-

መስክዋጋ
profile_version1
register_count4
memory_lane_count32
ciphertext_mul_per_step1
encrypted_input_moderesolver_canonicalized_envelope_v1
min_ciphertext_modulus(2^{52})

ለ Torii የቀረበው ግልጽ ጽሑፍ ግብዓት ከመፈፀሙ በፊት በተመሳሳይ BFV ፖስታ ውስጥ ይመሰጠራል። ለዚህ የአገልጋይ ወገን ምስጠራ የተወሰነው ዘር የሚከተለው ነው:

H("iroha.ram_lfe.execute.plaintext_bfv.v1"N(program_id)x) H( \texttt{"iroha.ram\_lfe.execute.plaintext\_bfv.v1"} \parallel N(\mathrm{program\_id}) \parallel x )

ከውጭ ለሚቀርቡ የተመሰጠረ ግብዓት ፣ መፍትሄ ሰጪው የመታወቂያ ጥቅሉን ይገልጻል እና ከመፈፀሙ በፊት ወደዚህ የ Deterministic envelope እንደገና ይመሰጠራል። ያ ካኖኒካላይዜሽን በሴማንቲክ እኩል BFV ምስጠራ ጽሑፎች ውስጥ ደረሰኝ ሃሽዎችን የተረጋጋ ያደርገዋል ።

የመጀመሪያዎቹ የተመሰጠረ ማህደረ ትውስታ መስመሮች ከሚከተሉት የተገኙ ናቸው:

σmem=H(Dprogram_memoryspolicy_hashAle64(0)) \sigma_{\mathrm{mem}} = H(D_{\mathrm{program\_memory}} \parallel s \parallel \mathrm{policy\_hash} \parallel A \parallel \operatorname{le64}(0))

ለ 32 መስመሮች ለእያንዳንዱ የሂደት ጊዜ ናሙናዎች (r_j \in [0,t)) እና የ BFV ምስጠራ ጽሑፍ በማከማቸት (r_j)። የተደበቀው ፕሮግራም ከዚያ በተመሰጠረ መዝገብ እና በተመሰጠረ ማህደረ ትውስታ ላይ ይሰራል

መመሪያአልጀብራ
LoadInput(dst, i)(R_{\mathrm{dst}} \leftarrow C_i)
LoadState(dst, j)(R_{\mathrm{dst}} \leftarrow S_j)
StoreState(j, src)(S_j \leftarrow R_{\mathrm{src}})
LoadConst(dst, a)(R_{\mathrm{dst}} \leftarrow \operatorname{Enc}(ሀ))
Add(dst, a, b)(R_{\mathrm{dst}} \leftarrow R_a + R_b)
AddPlain(dst, src, a)(R_{\mathrm{dst}} \leftarrow R_{\mathrm{src}} + a)
SubPlain(dst, src, a)(R_{\mathrm{dst}} \leftarrow R_{\mathrm{src}} - a)
MulPlain(dst, src, a)(R_{\mathrm{dst}} \leftarrow aR_{\mathrm{src}})
Mul(dst, a, b)(R_{\mathrm{dst}} \leftarrow R_aR_b), ከዚያም እንደገና መስመራዊ
SelectEqZero(dst, cond, z, nz)(R_{\mathrm{cond}}) ዲክሪፕት አድርግ፤ ዜሮ ከሆነ (R_z) ይምረጡ፣ አለበለዚያ (R_{nz})።
Output(src)(R_{\mathrm{src}}) ወደ ውፅዓት መዝገብ ዝርዝር ይጨምር።

የማስተማሪያ ቴፕ ከተጠናቀቀ በኋላ መፍትሄ ሰጪው እያንዳንዱን የውጤት መዝገብ ዲክሪፕት ያደርጋል ፣ 0 ን ወደ ባይት ይቀይረዋል ፣ እና እነዚያን ባይቶች ያገናኛል ።

O=bytes(Dec(Ro0)0,,Dec(Rok)0) O = \operatorname{bytes}(\operatorname{Dec}(R_{o_0})_0,\ldots, \operatorname{Dec}(R_{o_k})_0)

አጠቃላይ የፕሮግራም የተደረገባቸው የጀርባ አገናኞች የሚከተሉት ናቸው:

opaque_hash=H(Dprogram_opaquepolicy_hashO) \mathrm{opaque\_hash} = H(D_{\mathrm{program\_opaque}} \parallel \mathrm{policy\_hash} \parallel O)

receipt_hashprogram=H(Dprogram_receiptpolicy_hashOopaque_hash) \mathrm{receipt\_hash}_{\mathrm{program}} = H(D_{\mathrm{program\_receipt}} \parallel \mathrm{policy\_hash} \parallel O \parallel \mathrm{opaque\_hash})

ነባሪው የፕሮግራም መታወቂያ ቴፕ 64 የመግቢያ ቦታዎች አሉት ። ለእያንዳንዱ ክፍተት (i) ፣ የመግቢያ ቦታውን ይጫናል ፣ የማስታወስ መስመሩን ይጫናል (i \bmod 32) ፣ ያክላል ፣ እና ውጤቱን ያስወጣል:

R0Ci,R1Simod32,R2R0+R1,Output(R2) R_0 \leftarrow C_i,\qquad R_1 \leftarrow S_{i\bmod 32},\qquad R_2 \leftarrow R_0 + R_1,\qquad \operatorname{Output}(R_2)

የውጤት ሃሽ እና ደረሰኞች

አጠቃላይ RAM-LFE አፈፃፀም ደረሰኝ ጥሬ ውፅዓት አይፈርም ። የውፅአት ሃሽ ይፈርዳል

output_hash=H(DoutputO) \mathrm{output\_hash} = H(D_{\mathrm{output}} \parallel O)

ለ Torii RAM-LFE አፈፃፀም ደረሰኞች የተዛመዱ መረጃዎች ቀኖናዊ የፕሮግራም መታወቂያ ባይት ናቸው-

A=N(program_id) A = N(\mathrm{program\_id})

associated_data_hash=H(A) \mathrm{associated\_data\_hash}=H(A)

የተፈረመ ደረሰኝ ጥቅማጥቅሞች:

R=(program_id,program_digest,backend,verification_mode,output_hash,associated_data_hash,executed_at_ms,expires_at_ms) R = (\mathrm{program\_id}, \mathrm{program\_digest}, \mathrm{backend}, \mathrm{verification\_mode}, \mathrm{output\_hash}, \mathrm{associated\_data\_hash}, \mathrm{executed\_at\_ms}, \mathrm{expires\_at\_ms})

signed ሁነታ:

attestation=Signresolver(N(R)) \mathrm{attestation} = \operatorname{Sign}_{\mathrm{resolver}}(N(R))

ማረጋገጫው ፊርማውን በ resolver_public_key ያረጋግጣል እና እነዚህ ሁሉ እኩልነቶች ካልሆኑ በስተቀር ደረሰኙን ውድቅ ያደርጋል:

R.program_id=policy.program_id R.\mathrm{program\_id} = \mathrm{policy.program\_id}

R.backend=policy.backend R.\mathrm{backend} = \mathrm{policy.backend}

R.verification_mode=policy.verification_mode R.\mathrm{verification\_mode} = \mathrm{policy.verification\_mode}

R.program_digest=policy.public_parameters.hidden_program_digest R.\mathrm{program\_digest} = \mathrm{policy.public\_parameters.hidden\_program\_digest}

R.associated_data_hash=H(N(policy.program_id)) R.\mathrm{associated\_data\_hash} = H(N(\mathrm{policy.program\_id}))

ጥሪውን የሚያቀርብ ከሆነ output_hex ማረጋገጫ ሰጪው ደግሞ የሚከተሉትን ያረጋግጣል:

H(Doutputbytes(output_hex))=R.output_hash H(D_{\mathrm{output}} \parallel \operatorname{bytes}(\mathrm{output\_hex})) = R.\mathrm{output\_hash}

proof ሁነታ ፣ ማረጋገጫው ፊርማ ከመሆን ይልቅ የምስክር ወረቀት ጥቅል ይይዛል። የማረጋገጫው ዳግም ማስረጃ ፣ የወረዳ መታወቂያ ፣ የህዝብ መግቢያ መርሃግብር ሃሽ ፣ የማረጋገጫ ቁልፍ ሃሽ እና የተጋለጡ የሕዝብ ምሳሌዎች ከሙከራ ማረጋገጫ ሜታዳታ እና ከኮድ የተቀበለው ደረሰኝ-ክፍያ ሃሽ ጋር የሚጣጣም መሆኑን ያረጋግጣል ። እስቲ:

hR=H(N(R))=(h0,,h31) h_R = H(N(R)) = (h_0,\ldots,h_{31})

የሚጠበቁ የህዝብ ምሳሌዎች አራት የአንድ አካል አምዶች ናቸው ። አምድ (j) ባይት (h_{8j}\ldots h_{8j+7}) ይዟል ፣ ከዚያ በኋላ 24 ዜሮ ባይት:

instancej=h8jh8j+7024,0j<4 \mathrm{instance}_j = h_{8j}\parallel\cdots\parallel h_{8j+7}\parallel 0^{24}, \qquad 0 \le j < 4

የመለየት መለኪያ

መታወቂያ ጥራት እንደ ተጠቃሚው-ተኮር ግልጽ ያልሆነ መለያ መታወቂያ አጠቃላይ የጀርባ መጨረሻን opaque_hash አይጠቀምም። የ RAM-LFE የውጤት ሃሽ በመለየት ላይ በተወሰኑ ጎራዎች በኩል ይቀርባል:

opaque_idid=H(Did_opaqueN(program_id)output_hash) \mathrm{opaque\_id}_{\mathrm{id}} = H(D_{\mathrm{id\_opaque}} \parallel N(\mathrm{program\_id}) \parallel \mathrm{output\_hash})

receipt_hashid=H(Did_receiptN(program_id)output_hashopaque_idid) \mathrm{receipt\_hash}_{\mathrm{id}} = H(D_{\mathrm{id\_receipt}} \parallel N(\mathrm{program\_id}) \parallel \mathrm{output\_hash} \parallel \mathrm{opaque\_id}_{\mathrm{id}})

አንድ IdentifierResolutionReceipt የከፍተኛ ደረጃ ጠቃሚ ጭነት ይፈርማል:

I=(policy_id,R,opaque_idid,receipt_hashid,uaid,account_id) I = (\mathrm{policy\_id}, R, \mathrm{opaque\_id}_{\mathrm{id}}, \mathrm{receipt\_hash}_{\mathrm{id}}, \mathrm{uaid}, \mathrm{account\_id})

ለተፈረሙ መታወቂያ ደረሰኞች:

attestation=Signresolver(N(I)) \mathrm{attestation} = \operatorname{Sign}_{\mathrm{resolver}}(N(I))

ClaimIdentifier ደረሰኙን የሚቀበለው ፊርማው ወይም ማረጋገጫው ትክክለኛ ከሆነ ብቻ ነው ፣ የተካተተው RAM-LFE አፈፃፀም ጭነት ከተጠቀሰው የፕሮግራም ፖሊሲ ጋር የሚስማማ ሲሆን uaid እና account_id የሚጠየቀው አስገዳጅነት ነው።

የአፈፃፀም ፍሰት

አንድ አጠቃላይ RAM-LFE አፈጻጸም የሚከተለውን ቅርፅ ይከተላል:

  1. አስተዳደር ወይም ኦፕሬተር መዝገቦች RamLfeProgramPolicy
  2. ባለቤቱ ፖሊሲውን ያነቃቃል።
  3. ደንበኛው የህዝብ ፖሊሲ ሜታዳታዎችን ከ Torii ያነባል ።
  4. ደንበኛው በትክክል አንድ የመግቢያ ቅጽ ወደ መፍትሔው ያቀርባል: ቀላል ጽሑፍ input_hex ወይም የተመሰጠረ የግብዓት ፖስታ BFV።
  5. የ ሩጫ ጊዜ የተደበቀ ፕሮግራም ይገመግማል እና ይመለሳል output_hex, output_hash, opaque_hash, receipt_hash, እና ሀ RamLfeExecutionReceipt.
  6. ደንበኛው ወይም የጀርባው ክፍል ደረሰኙን ከታተመው ፖሊሲ ጋር በማነፃፀር ያረጋግጣል ፣ አማራጭም የተመለሰው output_hex ወደ ደረሰኙ output_hash ሃሽ መሆኑን ያረጋግጣል ።
  7. እንደ ClaimIdentifier ያሉ የከፍተኛ ደረጃ መመሪያዎች ጥሬ ግብዓትን ከመጫን ይልቅ የተረጋገጠ ደረሰኝን ማስገባት ይችላሉ ።

የመለየት ፖሊሲዎች

የመለየት ፖሊሲዎች RAM-LFE ን ተጨባጭ አጠቃቀም ናቸው ። በአጠቃላይ የፕሮግራም ፖሊሲ ላይ የንግድ ስም ቦታ እና መደበኛነት ደንብ ይጨምራሉ-

text
RegisterRamLfeProgramPolicy(
  program_id = "phone_team",
  owner = "<POLICY_OWNER>",
  backend = "bfv-programmed-sha3-256-v1",
  verification_mode = "signed",
  commitment = "<HIDDEN_PROGRAM_POLICY_COMMITMENT>",
  resolver_public_key = "<RESOLVER_PUBLIC_KEY>"
)
ActivateRamLfeProgramPolicy(program_id = "phone_team")

RegisterIdentifierPolicy(
  id = "phone#team",
  owner = "<POLICY_OWNER>",
  normalization = "PhoneE164",
  program_id = "phone_team",
  note = "Private phone registration for team dataspace"
)
ActivateIdentifierPolicy(policy_id = "phone#team")

የማጣሪያው ንብርብሮች የሚከተሉትን ለማገናኘት RAM-LFE ደረሰኝ ይጠቀማሉ።

  • policy_id
  • በተደበቀ ተግባር የተገኘው ግልጽ ያልሆነ መለያ
  • የመወሰን receipt_hash
  • ሂሳቡ UAID
  • የካኖኒክ account_id
  • የጄኔሪክ RAM-LFE አፈፃፀም ጠቃሚ ጭነት

ለተጠቃሚዎች-ተኮር የደንበኝነት ምዝገባ ስያሜዎችን ከግል መታወቂያዎች ለየብቻ ይያዙ። ስያሜዎች የህዝብ ስሞች ናቸው ፣ የስልክ ቁጥሮች ፣ የኢሜል አድራሻዎች እና መሰል እሴቶች በመለየት ፖሊሲዎች እና ደረሰኞች ውስጥ መፍሰስ አለባቸው ።

Torii መንገዶች

የመተግበሪያ-ተኮር የመንገድ ቤተሰብ ሲነቃ Torii RAM-LFE እና መታወቂያ ረዳቶችን ያጋልጣል:

መንገድዓላማ
GET /v1/ram-lfe/program-policiesRAM-LFE የፕሮግራም ፖሊሲዎችን እና የህዝብ አፈፃፀም ሜታዳታዎችን አክቲቭ እና ኢ-አክቲቭ አድርግ።
POST /v1/ram-lfe/programs/{program_id}/executeinput_hex ወይም encrypted_input አንድ ፕሮግራም አሂድ እና የውጤት ሃሽዎችን መልሶ ያግኙ ከአገርነት ነፃ ደረሰኝ ጋር።
POST /v1/ram-lfe/receipts/verifyከታተመው ፖሊሲ ጋር RamLfeExecutionReceipt ን ያረጋግጡ እና እንደ አማራጭ output_hex ን ከ output_hash ጋር አወዳድር።
GET /v1/identifier-policiesየማጣሪያ ፖሊሲዎችን, መደበኛነት ሁነታዎች, መፍትሄ ቁልፎች እና የተመሰጠረ-መግቢያ ሜታዳታ ዝርዝር.
POST /v1/accounts/{account_id}/identifiers/claim-receiptተጠቃሚው በ ClaimIdentifier ውስጥ ማስገባት የሚችለው ደረሰኝ ያወጣል።
POST /v1/identifiers/resolveአንድ ንቁ የይገባኛል ጥያቄ በሚኖርበት ጊዜ በተያያዘው ሂሳብ ላይ መደበኛ የሆነ መታወቂያ ግብዓት መፍታት።
GET /v1/identifiers/receipts/{receipt_hash}ለኦዲት እና ድጋፍ መሳሪያዎች በሳንቲም ሃሽ በመጠቀም ቀጣይነት ያለው መታወቂያ ጥያቄን ይፈልጉ።

ከመገንባትዎ በፊት ሁልጊዜ የዒላማው ኖት /openapi ወይም /openapi.json ሰነድ በእነዚህ መስመሮች ላይ ያረጋግጡ ። ተገኝነት በኖድ ግንባታ እና በአውታረ መረብ መገለጫ ላይ የተመሠረተ ነው ።

የአውታረ መረብ የስራ ሰዓት

Torii በሂደት ላይ ነው RAM-LFE የስራ ሰዓት በ torii.ram_lfe.programs[*], በቁልፍ program_id. እያንዳንዱ የተዋቀረ ፕሮግራም በሰንሰለት ላይ ያለውን የፖሊሲ ግዴታ የሚስማማ መሆን አለበት እና ለመገምገም የሚያስፈልገውን የአሂድ ጊዜ ቁሳቁስ ማቅረብ አለበት የምስክር ወረቀቶችን ያረጋግጡ። የማጣሪያ መስመሮች ይህንን ተመሳሳይ አሂድ ጊዜ እንደገና ይጠቀማሉ; ለየት ያለ የማጣሪያ-መፍትሄ ሰጪ ውቅር ገጽ አያስፈልጋቸውም.

የፖሊሲን ሰንሰለት በራሱ መመዝገብ ብቻውን በቂ አይደለም ። አንድ ዒላማ ኖት እንዲሁ የመንገድ ቤተሰብን መግለፅ አለበት እና ለማከናወን ለሚጠበቀው ፕሮግራሞች ተዛማጅ የአሂድ ጊዜ ቁሳቁስ ሊኖረው ይገባል ።

የኦፕሬሽን ጠባቂዎች

  • ፖሊሲዎቹን በማስመዝገብ የማይንቀሳቀስ፣ የሕዝብ ሜታዳታዎችን ማረጋገጥ እና ከዚያ እነሱን ማግበር።
  • የግምገማ ሚስጥሮች, resolver ፊርማ ቁልፎች, እና BFV ምስጢራዊ ቁሳቁሶች ከ ሰነዶች, መዝገቦች, ግብይቶች, እና ደንበኛ ጥቅሎች ውስጥ የተደበቁ ጠብቁ.
  • በሂሳብ ስያሜዎች ፣ በትራንስክሬሽን ሜታዳታ ፣ ክስተቶች ወይም በዓለም ሁኔታ መስኮች ውስጥ ጥሬ መለያዎችን አይጥሉ ።
  • SDK ማረጋገጫ ሰጪውን በሚያጋልጥበት ጊዜ የከፍተኛ ደረጃ መመሪያዎችን ከማቅረብዎ በፊት ደረሰኞችን ከደንበኛ ወገን ያረጋግጡ ።
  • የቆዩ ደረሰኞች ለዘለቄታው ሊቆዩ የማይችሉባቸው ጊዜያቸውን የሚያጠናቅቁ መስኮች ይጠቀሙ።
  • አዲስ ፕሮግራም ወይም መታወቂያ ፖሊሲ በመመዝገብ ፣ ደንበኞችን በማዛወር እና አዲሱን ደረሰኝ ሲፈስ አሮጌውን ፖሊሲ በማሰናከል ማሽከርከር ።