Аноним гүйлгээ
Iroha -ийн нэрэмжит гүйлгээ нь нууцлаг хөрөнгийн үйл ажиллагаанаас үүдэлтэй. Төрийн өмчийн бүртгэлээс бүртгэлийн төлбөрт шилжүүлэн суулгахын оронд, буцаан үнэ цэнийг хамгаалалттай номын сан руу нэвтрүүлж, дараа нь нурын мэдлэгийн баталгаа бүхий ил тод тэмдэглэлүүдийг зарцуулдаг.
Олон нийтийн номын сан нь нууцлалтай үйлдэл болсон тухай хэвээр тэмдэглэдэг. Энэ нь үүрэг гүйцэтгэх, хүчингүй болгох, баталгаажуулах хэшүүд болон үйл явдлыг бүртгэдэг боловч тэмдэглэлийн эзэмшигч, хүлээн авагч эсвэл хамгаалалттай хөдөлгөөний хэмжээг бүртгэхгүй. Худалдааны хэвийн хуудас нь өргөн мэдүүлсэн дансыг илрүүлэх боломжтой тул "аноним" гэдэг бол цахим сүлжээний болон дансны түвшинд нууцлагддаггүй, үл мэдэгдэх хөрөнгийн хөдөлгөөн гэсэн үг юм.
Барилгын блок
| Төгсгөл | Номын сангийн төлөөлөл |
|---|---|
| Сэтгэлэгт тэмдэглэл | Мөнгө, хэмжээ, эзэмшигчдийн мэдээлэл, санамжгүй байдалтай хувийн хөрөнгийн тэмдэгт. |
| Үүнд үүрэг гүйцэтгэгч | 32 байтын олон нийтийн үнэ цэнэ нь тэмдэглэлийн талбайдыг илрүүлэхгүйгээр нэгтгэдэг. |
| Үргэлжүүлэгч | Iroha нь хоёр дахин зарцуулахыг саад сэргийлэх зорилгоор давтамжлах хүчингүй болгодог. |
| Merkle түлх | Ашигт малтмалын үүрэг гүйцэтгэх дэргийн сүүлийн үеийн гаралтай зүйл. |
| Дашрамд холбогдсон | ProofAttachment нь баталгааны байт болон хяналтын түлхэгийн сэнслэл эсвэл гарын үсэгт хяналт тавих түлхэйтэй. |
| Үндсэн нууц үйл явдал | ConfidentialEvent::Shielded, Transferred, эсвэл Unshielded гэх мэт номын сангийн үйл явдал. |
Үндсэн чиглэл нь:
RegisterZkAsset: хөрөнгийг ZK-ийн хүчин чадалтай гэж бүртгэж, шилжүүлэн суулгах, хамгаалах болон хамгаалагдашгүй баталгаажуулах түлхүүдийг байлгаж байна.Shield: олон нийтийн тэнцвэрт төлбөрийг хадгалах, хамгаалалттай тэмдэгтийн үүрэг гүйцэтгэх.ZkTransfer: хадгаламжтай тэмдэгтийг шинэ хамгаалалттай тэмдэгтийн үүрэг гүйцэтгэхэд зарцуулдаг.Unshield: хяналт тавих тэмдэгтийг зарцуулдаг, төрийн сангийн үлдэгдэл олгодог.ScheduleConfidentialPolicyTransitionболонCancelConfidentialPolicyTransition: хөрөнгийн нууцлалын бодлогыг удирдлагаар өөрчилж байна.
Мөн хөрөнгийн тодорхойлолтод AssetConfidentialPolicy гэсэн тэмдэг байдаг. Захиргааны урсгалын бодлогын журмын хяналт нь хүчинтэй:
| Дээрх хэв маяг | Энэ нь юу вэ? |
|---|---|
TransparentOnly | Зөвхөн энгийн төрийн үлдэгдэл, шилжүүлэн суулгалыг хүлээн авдаг. |
Convertible | Хэрэглэгчид үнэ цэнийг олон нийтийн тэнцвэр болон хадгаламжтай тэмдэгтийн хооронд хөдөлгөх боломжтой. |
ShieldedOnly | Ашигт малтмалын санхүүжилт, шилжүүлэн суурьлах үйл ажиллагааны бүртгэлд үлдэх ёстой. |
Тэднийг хэрхэн ашиглах вэ?
- Үнэлгээний цэгүүд дээр нууцлан дэмжлэг олгох. Үнэлгээгчийн хяналт шалгаруулагч, идэвхтэй баталгаажуулах товчоо, Poseidon/Pedersen параметр IDs, болон нууцлалтын дүрэмүүдийн хувилбарыг тохиролцох ёстой.
- Ширээний хэрэглэгддэг санхүүжилтийн түлхүүр, параметрын багцсыг хэвлүүлнэ, бүртгэнэ. Валет болон оператор нь
VerifyingKeyId, жишээ ньhalo2/ipa:vk_transferхэмээх түлхүүдийг дурдсан байх ёстой. - Ашигт малтмалыг ZK-ийн хөрөнгө оруулалтаар
RegisterZkAssetбүртгүүлэх, эсвэл бодлогын шилжилтийгTransparentOnly-ээсConvertibleбуюуShieldedOnly-д хийх. - Төрийн хөрөнгийг
Shield-ээр хамгаалах. Суулгавар нь гүйлгээг өргөн мэдүүлэхээс өмнө хүлээн авагчдад тэмдэгтийн үүрэг гүйцэтгэл болон шифрлэгдсэн ашиг ачааллыг бий болгодог. ZkTransfer-тай нууцлан шилжүүлнэ. Номын сан нь орж ирсэн тэмдэгтүүдийг эзэмшдэг, орж ирж байгаа болон гарч буй үнэ цэнэ тэнцэж байгааг баталгаажуулдаг бөгөөд зарцуулсан тэмдэгт бүр сүүлийн үеийн үүрэг гүйцэтгэлийн модгоор байрладаг гэсэн баримтыг бий болгоно.Unshieldнь олон нийтийн хэмжээ болон хүлээн авагчдын дансыг илрүүлж, хувийн тэмдэглэлийн хүчингүй болгох хэрэглээг зарцуулж, хувийн өөрчлөлтийн гараа бий болгож болно.- Үндсэн нууц үйл явдлууд, баталгааны баримт бичгүүд, хүчингүй болгох байдлын байдал, үл тодруулсан хадгаламжийн баримт бичгүүдийг Torii эцсийн цэгүүдээр дамжуулан уншиж үзүүлэх аудитын ажил.
CLI Жишээ нь:
ZK CLI команд нь оператор болон шинжилгээний урсгалд зориулагдсан байдаг. Үйлдвэрлэлийн буулганаар хариуцлага, шифрлэгдсэн ашиг ачаалл, баталгаажуулалтыг буулгана/проверорын номын сантай дамжуулан хүргэх ёстой бөгөөд үр дүнтэй заалыг ирүүлэхийн өмнө .
ZK -ийн хибрид хөрөнгийг бүртгүүлэх:
iroha app zk register-asset \
--asset <asset-definition-id> \
--allow-shield true \
--allow-unshield true \
--vk-transfer halo2/ipa:vk_transfer \
--vk-unshield halo2/ipa:vk_unshield \
--vk-shield halo2/ipa:vk_shieldСэргээн хамгаалалттай тэмдэглэлд зориулсан шифрлэгдсэн ашиг ачааны хуудасны хувилбар бариарай:
iroha app zk envelope \
--ephemeral-pubkey 0101010101010101010101010101010101010101010101010101010101010101 \
--nonce-hex 020202020202020202020202020202020202020202020202 \
--ciphertext-b64 AQIDBA== \
--print-json \
--output note-envelope.binТөрийн хөрөнгийн санхүүжилтийг хөрөнгийн хамгаалалттай номонд хадгалах:
iroha app zk shield \
--asset <asset-definition-id> \
--from <account-id> \
--amount 1000 \
--note-commitment ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB \
--enc-payload note-envelope.binДашрамд халуун төхөөрөмжтэй хамгаалалтгүй JSON:
cat > unshield-proof.json <<'JSON'
{
"backend": "halo2/ipa",
"proof_b64": "BASE64_PROOF_BYTES",
"vk_ref": {
"backend": "halo2/ipa",
"name": "vk_unshield"
}
}
JSON
iroha app zk unshield \
--asset <asset-definition-id> \
--to <account-id> \
--amount 1000 \
--inputs DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF \
--proof-json unshield-proof.jsonSDK Жишээлбэл
Тухайн баталгааны байт нь тохируулсан баталгааны хяналтын хэсгээс ирдэг. Транзакцыоны ашигтай ачааллд зөвхөн олон нийтийн өгөгдлүүд болон баталгааны хавсралт хэрэгтэй:
use iroha_data_model::{
isi::zk::{Unshield, ZkTransfer},
prelude::{AccountId, AssetDefinitionId, InstructionBox},
proof::{ProofAttachment, ProofBox, VerifyingKeyId},
};
fn transfer_instruction(
asset: AssetDefinitionId,
input_nullifier: [u8; 32],
output_commitment: [u8; 32],
anchor_root: [u8; 32],
proof_bytes: Vec<u8>,
) -> InstructionBox {
let backend = "halo2/ipa".into();
let proof = ProofBox::new(backend, proof_bytes);
let vk = VerifyingKeyId::new("halo2/ipa", "vk_transfer");
let attachment = ProofAttachment::new_ref("halo2/ipa".into(), proof, vk);
ZkTransfer::new(
asset,
vec![input_nullifier],
vec![output_commitment],
attachment,
Some(anchor_root),
)
.into()
}
fn unshield_instruction(
asset: AssetDefinitionId,
recipient: AccountId,
amount: u128,
input_nullifier: [u8; 32],
anchor_root: [u8; 32],
proof_bytes: Vec<u8>,
) -> InstructionBox {
let backend = "halo2/ipa".into();
let proof = ProofBox::new(backend, proof_bytes);
let vk = VerifyingKeyId::new("halo2/ipa", "vk_unshield");
let attachment = ProofAttachment::new_ref("halo2/ipa".into(), proof, vk);
Unshield::new(
asset,
recipient,
amount,
vec![input_nullifier],
attachment,
Some(anchor_root),
)
.into()
}Аноним хөрөнгийн хадгаламж
Анноним хөрөнгийн хадгаламж нь хадгаламжийн хадгаламжид мөн адил хамгаалалттай шилжүүлэн суулгах машиныг ашигладаг. Талууд болон хадгаламжийг хадгаламжны бүртгэлд хэвээр тэмдэглэгддэг боловч санхүүжилт, чөлөөлөлт, цуцлах, шийдвэрлэх хөлүүд нь хамгаалалттай хүчингүй болгох болон гаргах үүрэг гүйцэтгэлийг ашигладаг.
ISI хяналт тавих үйл ажиллагаа, жишээг дэлгэрэнгүй үзнэ үү Үндэсний хөрөнгийн хяналтын .
Амьдралын эргэлт нь:
OpenAnonymousAssetEscrowсанхүүжилтийн хамгаалалттай нотлуудыг зарцуулдаг бөгөөд нэг хадгаламжийн үүрэг гүйцэтгэгчтэй.AcceptAnonymousAssetEscrowхудалдан авагч бүртгэнэ.MarkAnonymousEscrowPaymentSentхудалдан авагч төлбөрийг гадаад зах зээлээс илгээсэн тухай баримтыг бүртгэж байна.ReleaseAnonymousAssetEscrowхудалдан авагч гаргах үүрэг гүйцэтгэгчээс хадгаламж хүлээсэн үүргийг зарцуулна.CancelAnonymousAssetEscrowнь төлбөрийг тэмдэглэхгүй бол худалдааны гүйцэтгэх үүрэг хариуцлагад хадгаламж хүлээлгэн өгөх.OpenAnonymousEscrowDisputeболонResolveAnonymousEscrowDisputeнь баталгааны хэшүүдтэй, шийдвэрлэгчээр хяналтын хуваарилалтай маргаан тушаалтай хадгаламж хариуцан ажилладаг.
Эрүүлэг -д жагсаалсан нууцлан бүртгэгдсэн хадгаламжийн асуултуудыг ашиглан хадгаламж бичиг, статусыг хянах болно.
Математик
Доорх тэмдэглэл нь нууц хөрөнгийн урсгалыг тодорхойлдог. хэрэгжилтэд активын бодлого болон баталгаажуулагчийн бүртгэлийн идэвхитэй тойрог, параметр IDs -ийг ашигладаг тул үйлчлүүлэгчид үүрэг гүйцэтгэл, хүчингүй болсонд тооцгоогч, нотолгооны байтыг гарын үсэг / даалгаварны ил тод үр дүн гэж үзэх ёстой .
Сэргэлттэй тэмдэглэлг:
owner нь хүлээн авагчийн үзэх эсвэл зарцуулах материалаас үүдэлтэй бөгөөд rho нь санамсар ёсны тэмдэглэл юм.
Номын үүрэг гүйцэтгэгч нь нууцлагдсан үүрэг гүйцэлдэг:
Одоогийн нууцлагдсан шилжүүлэн суулгах эргэлтэд олон нийтийн өгөгдлүүд нь тэмдэглэлийн үүрэг гүйцэтгэгч, хүчингүй болгогч, Merkle түлх, хөрөнгийн тэмдэг, сүлжээний тэмдэг зэрэг юм.
Номыг зарцуулахдаа мөнгөн тэмдэгт нь хүчингүй болгож өгдөг:
N нь олон нийтэд нээлттэй байдаг. Энэ тэмдэгтийг илтгэхгүй, гэхдээ энэ тэмдэглэл болон сүлжээний хувьд тогтвортой тул Iroha нь ижил хүчингүй болгож байгаа хоёр дахь зарцуулыг татгалзаж болно.
Зохиоллын мод нь тэмдэглэлийн оршин тогтнолыг баталдаг. Хэрэв гарын үсэг C_i -ийг зарцуулдаг бол энэ баримт нь C_i -ээс сүүлийн үеийн олон нийтийн суурь руу хувийн Merkle замыг багтааж байна:
Үргэлтгүй шилжүүлэн суулгахад үнэ цэнийг хадгалахыг баталгаажуулах нь мөн:
Гаалийн хэмжээг хамгаалалттайгүй тохиолдолд:
Нэвтрүүлэгний дүгнэлтийг дараах байдлаар товчлуулж болно:
public_inputs нь үүрэг гүйцэтгэгч, хүчингүй болсоор тооцдог, түлхүүр, хөрөнгийн тэмдэг, сүлжээний тэмдэг болон олон нийтийн нууцалтгүй хэмжээ юм. Гэрч нь тэмдэглэлийн хэмжээ, санамжлалт байдал, зарцуулах материал, Merkle чиглэлүүд байна. Үнэлгээний баталгаажуулагчид нотолгоог шалгаж, дараа нь гарааны үүрэг гүйцэтгэлийг нэмж, өгөгдлийн хүчингүй болгогчдыг зарцуулсан гэж тэмдэглэж, нотолгооны хэсгийг өөрчлөх.
Олон нийтийн мэдээллийн хэрэгсэл
Аноним үйл ажиллагаа нь ажиглагдаж буй бүх баримтыг нууц болгодоггүй. Дараах мэдээллүүд хэвээр байх боломжтой:
- гүйлгээний хэш, блок өндөр болон захиалгын
- төлөөлөгч гүйлгээний эрх мэдэл, эсэх тохиолдолд хүсэлт нь хувийн нэвтрүүлгийн цэг эсвэл эргэлтийн загварыг ашигладаг.
- ашиглаж буй хөрөнгийн тодорхойлолт
- Үргэлжүүлэгч, үржихүйн үүрэг
- баталгаажуулах хэшүүд, шалгаруулалтын түлхүүрний сүлжээнүүд, сонголттой хуудасны хэшүүд
Unshield-ийн олон нийтийн хэмжээ, хүлээн авагчдын бүртгэл- үл тодруулсан хадгаламжийн худалдаалагч, худалдан авагч, байдал, цаг хугацааны тэмдэг, гэрчилгээний хэш
Хэрэглээлийг зохион байгуулж, энэ олон нийтийн метабараа нь та хамгаалж байгаа бизнесийн харилцааг илрэхгүй байх болно.