{"id":92428,"date":"2025-01-11T09:49:38","date_gmt":"2025-01-11T06:19:38","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/niftyzk-tutorial-4-ceremony-2enj\/"},"modified":"2025-01-11T09:49:38","modified_gmt":"2025-01-11T06:19:38","slug":"niftyzk-tutorial-4-ceremony-2enj","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/niftyzk-tutorial-4-ceremony-2enj\/","title":{"rendered":"Niftyzk tutorial 4 &#8211; \u062a\u0634\u0631\u06cc\u0641\u0627\u062a"},"content":{"rendered":"<div data-article-id=\"2200053\" id=\"article-body\">\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u06cc\u06a9 \u0645\u062f\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0622\u0646 \u0631\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0633\u0631\u0648\u0631 \u0645\u0631\u0627\u0633\u0645 \u062e\u0648\u062f \u0631\u0627 \u0628\u0631 \u0631\u0648\u06cc VPS \u0645\u0633\u062a\u0642\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0645\u0634\u0627\u0631\u06a9\u062a \u0647\u0627\u06cc \u0646\u0627\u0634\u0646\u0627\u0633 \u0631\u0627 \u0628\u067e\u0630\u06cc\u0631\u062f. \u067e\u0633 \u0627\u0632 \u0627\u06cc\u0646\u060c \u0645\u062f\u0627\u0631 \u0631\u0627 \u0646\u0647\u0627\u06cc\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u06a9\u0644\u06cc\u062f \u062a\u0623\u06cc\u06cc\u062f \u0646\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0635\u0627\u062f\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645<\/p>\n<p>\u0628\u062f\u0648\u06cc\u0645 <code>niftyzk init projectname<\/code> \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>Creating a new directory with name projectname\n? What project do you want to scaffold? Commit-Reveal Scheme\n? Choose the hashing algorithm to use:  poseidon\n? Do you wish to add tamperproof public inputs? (E.g: walletaddress):  no\nGenerating circuits\nGenerating javascript\nDone\nRun npm install in your project folder\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0628\u062f\u0648 <code>npm install<\/code> \u0648 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc ptau \u0631\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u0645<\/p>\n<p><code>niftyzk ptaufiles<\/code>  \u060c \u0645\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u06a9\u0648\u0686\u06a9\u062a\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0637\u0631\u062d commit-reveal \u062e\u0648\u062f \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>? Select a ptau file to download powersOfTau28_hez_final_14.ptau\nConnecting to download powersOfTau28_hez_final_14.ptau\nStarting to download 18.08 MiB\ndownloading [====================] 100% 0.0s\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062d\u0627\u0644\u0627 \u0641\u0642\u0637 \u0628\u062f\u0648 <code>niftyzk compile<\/code> \u0648 \u0641\u0627\u06cc\u0644 ptau \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f\u060c \u062a\u0627 \u0627\u06cc\u0646\u062c\u0627 \u062e\u0648\u0628 \u0627\u0633\u062a.<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f <code>git init<\/code> \u0648 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f <code>git add .<\/code><\/p>\n<p>\u0627\u06af\u0631 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f <code>git status<\/code> \u0628\u0627\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ git status\nOn branch master\n\nNo commits yet\n\nChanges to be committed:\n  (use \"git rm --cached <file>...\" to unstage)\n    new file:   .gitignore\n    new file:   circuits\/circuit.circom\n    new file:   circuits\/commitment_hasher.circom\n    new file:   circuits\/compiled\/circuit.r1cs\n    new file:   circuits\/compiled\/circuit.sym\n    new file:   circuits\/compiled\/circuit_js\/circuit.wasm\n    new file:   circuits\/compiled\/circuit_js\/generate_witness.js\n    new file:   circuits\/compiled\/circuit_js\/witness_calculator.js\n    new file:   circuits\/compiled\/zkeys\/circuit_0000.zkey\n    new file:   lib\/index.js\n    new file:   package-lock.json\n    new file:   package.json\n    new file:   readme.md\n    new file:   test\/index.test.js\n    new file:   test\/input.js\n\n<\/file><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646\u0647\u0627 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062f\u0631 \u062d\u06cc\u0646 \u062f\u0627\u0631\u0628\u0633\u062a \u0648 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0646\u062f. \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f <code>circuits\/compiled<\/code> \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0634\u0627\u0645\u0644 \u062a\u0645\u0627\u0645 \u0645\u0635\u0646\u0648\u0639\u0627\u062a \u062e\u0631\u0648\u062c\u06cc \u062a\u0648\u0633\u0637 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0633\u062a \u0648 zkey \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0631\u06a9\u062a \u062f\u0631 \u0645\u0631\u0627\u0633\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc ptau \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u0646\u062f\u0627\u0632\u0647\u200c\u0634\u0627\u0646 commit \u0646\u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u0627\u0645\u0627 \u0647\u0645\u06cc\u0634\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0631\u0627 commit \u06a9\u0646\u06cc\u0645<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ git commit -m \"initial commit\"\n[master (root-commit) 946c8e7] initial commit\n 15 files changed, 7212 insertions(+)\n create mode 100644 .gitignore\n create mode 100644 circuits\/circuit.circom\n create mode 100644 circuits\/commitment_hasher.circom\n create mode 100644 circuits\/compiled\/circuit.r1cs\n create mode 100644 circuits\/compiled\/circuit.sym\n create mode 100644 circuits\/compiled\/circuit_js\/circuit.wasm\n create mode 100644 circuits\/compiled\/circuit_js\/generate_witness.js\n create mode 100644 circuits\/compiled\/circuit_js\/witness_calculator.js\n create mode 100644 circuits\/compiled\/zkeys\/circuit_0000.zkey\n create mode 100644 lib\/index.js\n create mode 100644 package-lock.json\n create mode 100644 package.json\n create mode 100644 readme.md\n create mode 100644 test\/index.test.js\n create mode 100644 test\/input.js\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u0631\u0627\u0647 \u062d\u0644 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u06af\u06cc\u062a \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u062e\u0648\u062f \u0628\u0631\u0648\u06cc\u062f\u060c \u0645\u0646 \u0627\u0632 github \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645 \u0627\u0645\u0627 \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0645\u062e\u0632\u0646 \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f. \u0645\u0627 \u0628\u0639\u062f\u0627\u064b \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 VPS \u06a9\u0644\u0648\u0646 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0627\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u0644 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0631\u0627 \u0646\u06cc\u0632 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u062f\u0631 \u0622\u0646\u062c\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f.<\/p>\n<p>\u0645\u062e\u0632\u0646 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0627\u06cc \u0645\u0631\u062c\u0639 \u0627\u0633\u062a:<\/p>\n<p>https:\/\/github.com\/NiftyZk\/projectname<\/p>\n<p><strong>\u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062f\u0633\u062a\u06cc<\/strong><\/p>\n<p>\u0628\u0631\u0627\u06cc VPS\u060c \u0645\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u0631 Hetzner \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0645. \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0647\u0631 \u0631\u0627\u0647 \u062d\u0644 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u06cc\u0627 \u062d\u062a\u06cc \u062e\u0648\u062f \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u062f\u0631 Raspberry Pi \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 SSH \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f. \u0645\u0627 Nginx \u0631\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u062d\u062a\u06cc \u06cc\u06a9 \u062f\u0627\u0645\u0646\u0647 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 namecheap \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062f\u0631 console.hetzner.cloud \u06cc\u06a9 2VCPU\u060c 4 \u06af\u06cc\u06af\u0627\u0628\u0627\u06cc\u062a Ram X86 VPS \u0628\u0647 \u0642\u06cc\u0645\u062a 4.11 \u06cc\u0648\u0631\u0648 \u062f\u0631 \u0645\u0627\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc SSH \u062e\u0648\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0631\u062f\u0645. \u0627\u06af\u0631 \u062f\u0631 SSH \u062a\u0627\u0632\u0647 \u06a9\u0627\u0631 \u0647\u0633\u062a\u06cc\u062f\u060c \u0628\u0627\u06cc\u062f \u06a9\u0645\u06cc \u0648\u0642\u062a \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \u062a\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u0628\u06cc\u0627\u0645\u0648\u0632\u06cc\u062f.<\/p>\n<p><code>ssh root@serverip<\/code><\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u0628\u0647 VPS \u0631\u0627\u0647 \u062f\u0648\u0631\u06cc \u06a9\u0647 \u0628\u0627 \u06a9\u0644\u0627\u06cc\u0646\u062a SSH \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0645 \u0648\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u0645\u060c \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0631\u0648\u062a \u0648\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u0645 \u0632\u06cc\u0631\u0627 \u0647\u06cc\u0686 \u06a9\u0627\u0631\u0628\u0631 \u062f\u06cc\u06af\u0631\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u062a\u0627\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0641\u0639\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0645\u0631\u0627\u0633\u0645 \u062e\u0627\u0631\u062c \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p><code>sudo apt update<\/code><\/p>\n<p><code>sudo apt upgrade<\/code><\/p>\n<p><code>sudo apt install nginx<\/code><\/p>\n<p>\u0645\u0627 snap \u0631\u0627 \u0628\u0631\u0627\u06cc certbot \u0646\u0635\u0628 \u0645\u06cc \u06a9\u0646\u06cc\u0645<\/p>\n<p><code>sudo apt install snapd<\/code><\/p>\n<p><code>sudo snap install --classic certbot<\/code><\/p>\n<p><code>sudo ln -s \/snap\/bin\/certbot \/usr\/bin\/certbot<\/code><\/p>\n<p><code>sudo certbot --nginx<\/code><\/p>\n<p>\u0628\u0627\u06cc\u062f \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f \u0631\u0627 \u0637\u0648\u0631\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 \u0631\u06a9\u0648\u0631\u062f A \u0628\u0627 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f <code>@<\/code> \u0628\u0627 \u0627\u0634\u0627\u0631\u0647 \u0628\u0647 IP VPS \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc certbot \u0628\u0631\u0627\u06cc \u0635\u062f\u0648\u0631 \u06af\u0648\u0627\u0647\u06cc. \u0627\u0646\u062a\u0634\u0627\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a DNS \u0634\u0645\u0627 \u0632\u0645\u0627\u0646 \u0645\u06cc \u0628\u0631\u062f\u060c \u0627\u0645\u0627 \u0627\u06af\u0631 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u0628\u0647 \u062e\u0648\u0628\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0622\u062f\u0631\u0633 IP \u0628\u0627\u06cc\u062f \u0646\u0634\u0627\u0646 \u062f\u0647\u062f \u06a9\u0647 NGINX \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 nodejs \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0633\u0646\u0627\u062f \u0631\u0633\u0645\u06cc \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645<br \/>https:\/\/nodejs.org\/en\/download<\/p>\n<p><code>curl -o- https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/v0.40.1\/install.sh | bash<\/code><\/p>\n<p>\u0627\u06cc\u0646 nvm \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0644\u0627\u0632\u0645 \u0628\u0627\u0634\u062f \u062c\u0644\u0633\u0647 ssh \u0631\u0627 \u067e\u0633 \u0627\u0632 \u0646\u0635\u0628 \u0645\u062c\u062f\u062f \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u0646\u0648\u062f \u062c\u062f\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 nvm \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/p>\n<p><code>nvm install 22<\/code><\/p>\n<p>\u0645\u0627 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 pm2 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645\u060c \u0627\u06cc\u0646 \u0628\u0647 \u0628\u0627\u0632 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u0633\u0631\u0648\u0631 \u0645\u0631\u0627\u0633\u0645 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u062c\u0644\u0633\u0647 ssh \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><code>npm install -g pm2<\/code><\/p>\n<p><code>pm2 startup systemd<\/code><\/p>\n<p>\u0645\u062e\u0632\u0646\u06cc \u0631\u0627 \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Git \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u0645 \u062f\u0631 \u0641\u0647\u0631\u0633\u062a \u0627\u0635\u0644\u06cc \u062e\u0648\u062f \u06a9\u0644\u0648\u0646 \u06a9\u0646\u06cc\u062f \u0648 \u0641\u0631\u0627\u0645\u0648\u0634 \u0646\u06a9\u0646\u06cc\u062f \u06a9\u0647 niftyzk \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><code>npm install -g git+https:\/\/github.com\/NiftyZk\/niftyzk.git<\/code><\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc nginx \u0628\u0631\u0627\u06cc \u067e\u0631\u0627\u06a9\u0633\u06cc \u067e\u0648\u0631\u062a 3000 \u0628\u0647 443 SSL \u0648 \u0627\u0631\u062a\u0642\u0627\u0621 \u062a\u0645\u0627\u0645 \u0627\u062a\u0635\u0627\u0644\u0627\u062a \u063a\u06cc\u0631 SSL \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a. \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f <code>\/etc\/nginx\/sites-available\/default<\/code> \u0648 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 <strong>\u0642\u0633\u0645\u062a \u0647\u0627\u06cc YOURDOMAIN \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u062e\u0648\u062f \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f!<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>server {\n        #SSL only\n        listen 443 ssl default_server;\n        listen [::]:443 ssl default_server;\n        client_max_body_size 200M;\n\n        ssl_certificate \/etc\/letsencrypt\/live\/YOURDOMAIN\/fullchain.pem; # managed by Certbot\n        ssl_certificate_key \/etc\/letsencrypt\/live\/YOURDOMAIN\/privkey.pem; # managed by Certbot\n        include \/etc\/letsencrypt\/options-ssl-nginx.conf; # managed by Certbot\n        ssl_dhparam \/etc\/letsencrypt\/ssl-dhparams.pem; # managed by Certbot\n\n\n        server_name YOURDOMAIN;\n\n        location \/ {\n                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n                proxy_set_header X-NginX-Proxy true;\n                proxy_set_header Host $host;\n                proxy_set_header Upgrade $http_upgrade;\n                proxy_set_header X-Real-IP $remote_addr;\n                proxy_set_header Connection \u2018upgrade\u2019;\n                proxy_pass http:\/\/127.0.0.1:3000; #port where you are serving your express app.\n                proxy_http_version 1.1;\n                proxy_cache_bypass $http_upgrade;\n                proxy_ssl_server_name on;\n                proxy_pass_header Server;\n                proxy_cache_bypass $http_upgrade;\n                proxy_redirect off;\n        }\n}\n\nserver {\n        listen 80;\n        listen [::]:80;\n        server_name _;\n\n        return 301 https:\/\/$host$request_uri;\n\n}\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u067e\u0633 \u0627\u0632 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0641\u0627\u06cc\u0644\u060c nginx \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f<\/p>\n<p><code>sudo systemctl reload nginx<\/code><\/p>\n<p>\u062d\u0627\u0644 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0648\u0633\u062a\u0647 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0645\u0631\u0627\u0633\u0645 niftyzk \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062a\u0627 pm2 \u0642\u0627\u0628\u0644 \u0627\u062c\u0631\u0627 \u0628\u0627\u0634\u062f.<\/p>\n<p>cd \u0631\u0627 \u0648\u0627\u0631\u062f \u0641\u0647\u0631\u0633\u062a \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u06a9\u0644\u0648\u0646 \u0634\u062f\u0647 \u062e\u0648\u062f \u06a9\u0646\u06cc\u062f \u0648 <code>npm install<\/code> \u0633\u067e\u0633 <code>touch run.sh<\/code> \u0648 \u0628\u0627 \u06cc\u06a9 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0628\u0627\u0632\u0634 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>#!\/usr\/bin\/bash\nniftyzk ceremony\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0627\u0646\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 ptau \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0627 <code>niftyzk ptaufiles<\/code> \u060c \u0628\u0631\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0627\u0632 14 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0647\u0645\u0627\u0646 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0645\u0631\u0627\u0633\u0645 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c <code>pm2 start run.sh<\/code><\/p>\n<p>\u062a\u0628\u0631\u06cc\u06a9 \u0645\u06cc\u200c\u06af\u0648\u06cc\u06cc\u0645\u060c \u0633\u0631\u0648\u0631 \u0645\u0631\u0627\u0633\u0645 \u0631\u0627 \u0631\u0648\u06cc \u062f\u0627\u0645\u0646\u0647\u200c\u062a\u0627\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0648\u0642\u062a\u06cc \u0627\u0632 \u0622\u0646 \u0628\u0627\u0632\u062f\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f:<\/p>\n<p><\/p>\n<p><strong>\u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u061f<\/strong><\/p>\n<p>\u0647\u0631 \u06a9\u0633\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0632 \u0645\u0631\u0627\u0633\u0645 \u0634\u0645\u0627 \u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0646\u062f\u060c \u0634\u0631\u06a9\u062a \u0639\u0645\u0648\u0645\u06cc \u0627\u0633\u062a. \u0622\u0646\u0647\u0627 \u06cc\u06a9 \u0646\u0627\u0645 \u0648\u0627\u0631\u062f \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u0633\u067e\u0633 \u062f\u0631 \u06cc\u06a9 \u0635\u0641 \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f. \u0648\u0642\u062a\u06cc \u0646\u0648\u0628\u062a \u0622\u0646\u0647\u0627 \u0628\u0627\u0634\u062f \u06a9\u0647 \u0645\u0634\u0627\u0631\u06a9\u062a \u06a9\u0646\u0646\u062f\u060c \u0627\u0632 \u0622\u0646\u0647\u0627 \u062e\u0648\u0627\u0633\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f \u062a\u0627 \u0645\u0642\u062f\u0627\u0631\u06cc \u0622\u0646\u062a\u0631\u0648\u067e\u06cc \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u0646\u062f \u0648 \u062f\u0631 \u0633\u0645\u062a \u0645\u0634\u062a\u0631\u06cc SnarkJS \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u0646\u062f \u062a\u0627 \u062f\u0631 \u0622\u062e\u0631\u06cc\u0646 zkey \u0645\u0634\u0627\u0631\u06a9\u062a \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0628\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u0644\u0627\u06af \u0648 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0648\u0631\u0648\u062f\u06cc \u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0644\u0627\u06af \u0628\u0627 \u0647\u0634 sha256 \u0646\u0627\u0645 \u062e\u0648\u062f \u0645\u06cc \u062a\u0648\u0627\u0646 \u0634\u0631\u06a9\u062a \u062f\u0631 \u0645\u0631\u0627\u0633\u0645 \u0631\u0627 \u062a\u0627\u06cc\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0647 \u0645\u062e\u0632\u0646 \u0634\u0645\u0627 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0628\u0647 \u0646\u0627\u0645 \u0645\u0634\u0627\u0631\u06a9\u062a\u060c \u06a9\u0647 \u062d\u0627\u0648\u06cc \u0641\u0627\u06cc\u0644 log.csv \u0627\u0633\u062a.<\/p>\n<p>\u067e\u0633 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u0627\u0645 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u0645: <code>helloworld<\/code> \u0648 \u0645\u0642\u062f\u0627\u0631\u06cc \u0622\u0646\u062a\u0631\u0648\u067e\u06cc \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0627\u0641\u062a\u0627\u062f\u061f \u0633\u0647\u0645\u06cc \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f <code>\/circuits\/compiled\/zkeys\/<\/code> \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0634\u062f <code>circuit_0001.zkey<\/code> \u0648 \u0641\u0627\u06cc\u0644 log \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0648\u0631\u0648\u062f\u06cc csv \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>Contribution,936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af,087ec9f31cc05fa8db3c46ed360a5294fd6c99aaa97e244044ca936c3e302e35cd34080e86eaa4a67d1e2c717d25b90759f46cb4af692ac5b3e2d17f04bacbfa,circuit_0001.zkey\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0634 \u0627\u0648\u0644 \u06cc\u06a9 \u0647\u0634 sha256 \u0627\u0632 \u0646\u0627\u0645 \u0648\u0627\u0631\u062f \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u062f\u0648\u0645\u06cc \u0647\u0634 blake2b \u0645\u062f\u0627\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0639\u062f\u0627\u064b \u062f\u0631 \u0646\u0647\u0627\u06cc\u06cc \u0634\u062f\u0646 \u0645\u062f\u0627\u0631 \u0648\u0627\u0631\u062f \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code> echo -n helloworld | sha256sum \n936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af  -\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0645\u0631\u0627\u0633\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u0646\u0627\u0645\u062d\u062f\u0648\u062f \u0622\u0646\u0644\u0627\u06cc\u0646 \u0628\u0627\u0634\u062f \u0648 \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0634\u0627\u0631\u06a9\u062a \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u062a\u0642\u0644\u0628 \u0646\u06a9\u0646\u062f\u060c \u0627\u06cc\u0645\u0646 \u0627\u0633\u062a. \u0628\u0632\u0631\u06af\u062a\u0631\u06cc\u0646 \u0641\u0627\u06cc\u0644 PTAU \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0645\u0631\u0627\u0633\u0645 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0627 \u0622\u0646 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f <code>niftyzk ptaufiles<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>powersOfTau28_hez_final_15.ptau blake2b hash: 982372c867d229c236091f767e703253249a9b432c1710b4f326306bfa2428a17b06240359606cfe4d580b10a5a1f63fbed499527069c18ae17060472969ae6e Power: 15, Max Constraints: 32K Size: 36.08 MiB Supports built in ceremony server: YES\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u0627\u0645\u0631 \u062a\u0646\u06af\u0646\u0627\u06cc \u0634\u0628\u06a9\u0647 \u0627\u0633\u062a. <code>Any circuits that require more than max 32k constraints will need to do a ceremony manually using snarkjs.<\/code><\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u067e\u0633 \u0627\u0632 \u0686\u0646\u062f \u0645\u0634\u0627\u0631\u06a9\u062a\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0631\u0648\u0631 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u0634\u0627\u0631\u06a9\u062a \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0633\u067e\u0633 \u06cc\u06a9 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f <code>git add .<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>root@niftyzk-ceremony:\/home\/nifty\/projectname# git status\nOn branch master\nYour branch is up to date with 'origin\/master'.\n\nChanges to be committed:\n  (use \"git restore --staged <file>...\" to unstage)\n    new file:   circuits\/compiled\/contributions\/log.csv\n    new file:   circuits\/compiled\/zkeys\/circuit_0001.zkey\n    new file:   circuits\/compiled\/zkeys\/circuit_0002.zkey\n    new file:   circuits\/compiled\/zkeys\/circuit_0003.zkey\n    new file:   run.sh\n\n<\/file><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0627\u06cc\u0646 zkey \u0647\u0627 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u0648 \u0628\u0647 \u0645\u062e\u0632\u0646 \u062e\u0648\u062f \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f. \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0648\u0628 \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u062e\u0627\u0645\u0648\u0634 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><strong>\u0645\u062f\u0627\u0631 \u0631\u0627 \u0646\u0647\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0631\u0627\u0633\u0645 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0646\u0647\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0641\u0642\u0637 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0627 \u0628\u06a9\u0634\u06cc\u062f \u0648 \u06cc\u06a9 \u0686\u0631\u0627\u063a \u0631\u0646\u062f\u0648\u0645 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><code>niftyzk finalize --beacon 0000000000000000000102b8a74a6e9b9344f0abb3ba25dea7f847c7296fb21d<\/code><\/p>\n<p>Niftyzk finalize \u0645\u0631\u0627\u0633\u0645 \u0631\u0627 \u06a9\u0627\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0645\u0646 \u0627\u0632 \u0647\u0634 \u0628\u0644\u0627\u06a9 \u0628\u06cc\u062a \u06a9\u0648\u06cc\u0646 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0686\u0631\u0627\u063a \u062f\u0631\u06cc\u0627\u06cc\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645. \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0639\u062f\u062f \u0647\u06af\u0632\u0627\u062f\u0633\u06cc\u0645\u0627\u0644 \u0642\u0627\u0628\u0644 \u062a\u0627\u06cc\u06cc\u062f \u0628\u0627\u0634\u062f.<\/p>\n<p>\u0648\u0642\u062a\u06cc \u0646\u0647\u0627\u06cc\u06cc\u200c\u0633\u0627\u0632\u06cc \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u06cc\u062f\u060c \u0628\u0627\u06cc\u062f \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u0634\u0627\u0631\u06a9\u062a\u200c\u0647\u0627 \u062b\u0628\u062a \u0634\u062f\u0647\u200c\u0627\u0646\u062f. \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0646\u0627\u0645\u06cc \u0631\u0627 \u06a9\u0647 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u0628\u062f\u0627\u0646\u06cc\u062f\u060c \u0647\u0645\u06cc\u0634\u0647 \u0642\u0627\u0628\u0644 \u062a\u0623\u06cc\u06cc\u062f \u0627\u0633\u062a \u06a9\u0647 \u0645\u0634\u0627\u0631\u06a9\u062a \u0634\u0645\u0627 \u062f\u0631 zkey \u0646\u0647\u0627\u06cc\u06cc \u0628\u0627\u0634\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>[INFO]  niftyzk: contribution #1 936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af:\n                087ec9f3 1cc05fa8 db3c46ed 360a5294\n                fd6c99aa a97e2440 44ca936c 3e302e35\n                cd34080e 86eaa4a6 7d1e2c71 7d25b907\n                59f46cb4 af692ac5 b3e2d17f 04bacbfa\n[INFO]  niftyzk: ZKey Ok!\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f <code>circuit.final.zkey<\/code><\/p>\n<p>\u062d\u0627\u0644\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u062f\u0648\u06cc\u062f <code>niftyzk vkey --final<\/code> \u0648 \u0646\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>verification_key.json<\/code> <br \/>\u0627\u06a9\u0646\u0648\u0646 \u0645\u062f\u0627\u0631 \u0634\u0645\u0627 \u0627\u0645\u0646 \u0648 \u0622\u0645\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0627\u0633\u062a.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u06cc\u06a9 \u0645\u062f\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0622\u0646 \u0631\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0633\u0631\u0648\u0631 \u0645\u0631\u0627\u0633\u0645 \u062e\u0648\u062f \u0631\u0627 \u0628\u0631 \u0631\u0648\u06cc VPS \u0645\u0633\u062a\u0642\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0645\u0634\u0627\u0631\u06a9\u062a \u0647\u0627\u06cc \u0646\u0627\u0634\u0646\u0627\u0633 \u0631\u0627 \u0628\u067e\u0630\u06cc\u0631\u062f. \u067e\u0633 \u0627\u0632 \u0627\u06cc\u0646\u060c \u0645\u062f\u0627\u0631 \u0631\u0627 \u0646\u0647\u0627\u06cc\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u06a9\u0644\u06cc\u062f \u062a\u0623\u06cc\u06cc\u062f \u0646\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0635\u0627\u062f\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0628\u062f\u0648\u06cc\u0645 niftyzk init projectname \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f &hellip;<\/p>\n","protected":false},"author":2,"featured_media":92430,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-92428","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/92428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=92428"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/92428\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/92430"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=92428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=92428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=92428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}