From f474fe250087ab547152ed3074ecd6e91520e145 Mon Sep 17 00:00:00 2001 From: arnaucube Date: Tue, 14 May 2019 20:00:05 +0200 Subject: [PATCH] update readme, add circuit examples dir, add vim/nvim .circuit syntax highlighter --- README.md | 14 ++++++ circuitexamples/factor.circuit | 4 ++ circuitexamples/function.circuit | 8 +++ vim-syntax/README.md | 10 ++++ vim-syntax/ftdetect/go-snark-circuit.vim | 1 + vim-syntax/screenshot.png | Bin 0 -> 21843 bytes vim-syntax/syntax/go-snark-circuit.vim | 61 +++++++++++++++++++++++ 7 files changed, 98 insertions(+) create mode 100644 circuitexamples/factor.circuit create mode 100644 circuitexamples/function.circuit create mode 100644 vim-syntax/README.md create mode 100644 vim-syntax/ftdetect/go-snark-circuit.vim create mode 100644 vim-syntax/screenshot.png create mode 100644 vim-syntax/syntax/go-snark-circuit.vim diff --git a/README.md b/README.md index c4c46c7..e444a98 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,17 @@ Implementation of the zkSNARK [Pinocchio protocol](https://eprint.iacr.org/2013/ Not finished, implementing this in my free time to understand it better, so I don't have much time. +Currently allows to do the complete path with [Pinocchio protocol](https://eprint.iacr.org/2013/279.pdf) : +- compile circuuit + - parsers + - R1CS + - QAP +- generate trusted setup +- calculate witness +- generate proofs +- verify proofs + - with BN128 pairing + Current implementation status: - [x] Finite Fields (1, 2, 6, 12) operations - [x] G1 and G2 curve operations @@ -165,6 +176,9 @@ assert.True(t, VerifyProof(*circuit, setup, proof, publicSignalsVerif, true)) go test ./... -v ``` +## vim/nvim circuit syntax highlighter +For more details and installation instructions see https://github.com/arnaucube/go-snark/tree/master/vim-syntax + --- diff --git a/circuitexamples/factor.circuit b/circuitexamples/factor.circuit new file mode 100644 index 0000000..8bbb1b5 --- /dev/null +++ b/circuitexamples/factor.circuit @@ -0,0 +1,4 @@ +func test(private a, private b, public c): + d = a * b + equals(c, d) + out = 1 * 1 diff --git a/circuitexamples/function.circuit b/circuitexamples/function.circuit new file mode 100644 index 0000000..fc29edc --- /dev/null +++ b/circuitexamples/function.circuit @@ -0,0 +1,8 @@ +func test(private s0, public s1): + s2 = s0 * s0 + s3 = s2 * s0 + s4 = s3 + s0 + s5 = s4 + 5 + equals(s1, s5) + out = 1 * 1 + diff --git a/vim-syntax/README.md b/vim-syntax/README.md new file mode 100644 index 0000000..663c6d0 --- /dev/null +++ b/vim-syntax/README.md @@ -0,0 +1,10 @@ +# circuit vim syntax + +## Installation in vim/nvim using plug +Using [Plug](https://github.com/junegunn/vim-plug), add this lines into the `.vimrc`/`init.vim`: +``` +Plug 'arnaucube/go-snark' +Plug 'arnaucube/go-snark', {'rtp': 'vim-syntax'} +``` + +![screenshot-vim](https://raw.githubusercontent.com/arnaucube/go-snark/master/vim-syntax/screenshot.png "screenshot-vim") diff --git a/vim-syntax/ftdetect/go-snark-circuit.vim b/vim-syntax/ftdetect/go-snark-circuit.vim new file mode 100644 index 0000000..92ca0bd --- /dev/null +++ b/vim-syntax/ftdetect/go-snark-circuit.vim @@ -0,0 +1 @@ +au BufRead,BufNewFile *.circuit set filetype=go-snark-circuit diff --git a/vim-syntax/screenshot.png b/vim-syntax/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..766faf56c8a5b806ecdc21f43e584f29f39e44bd GIT binary patch literal 21843 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\|0[xX][0-9a-fA-F]\+\>" +syn match goSnarkCircuitOpSymbols "+\|-\|\*\|:\|)\|(\|=" +syn keyword goSnarkCircuitPrivatePublic private public +syn keyword goSnarkCircuitOut out +syn keyword goSnarkCircuitEquals equals +syn keyword goSnarkCircuitFunction func +syn match goSnarkCircuitFuncCall /\<\K\k*\ze\s*(/ +syn keyword goSnarkCircuitPrivate private nextgroup=goSnarkCircuitInputName skipwhite +syn keyword goSnarkCircuitPublic public nextgroup=goSnarkCircuitInputName skipwhite +syn match goSnarkCircuitInputName '\i\+' contained +syn match goSnarkCircuitBraces "[{}\[\]]" +syn match goSnarkCircuitParens "[()]" + +syn sync fromstart +syn sync maxlines=100 + +" Define the default highlighting. +" Only when an item doesn't have highlighting yet +hi def link goSnarkCircuitLineComment Comment +hi def link goSnarkCircuitCommentTodo Todo +hi def link goSnarkCircuitSpecialCharacter Special +hi def link goSnarkCircuitNumber Number +hi def link goSnarkCircuitOpSymbols Operator +hi def link goSnarkCircuitFuncCall Function +hi def link goSnarkCircuitEquals Identifier +hi def link goSnarkCircuitFunction Keyword +hi def link goSnarkCircuitBraces Function +hi def link goSnarkCircuitPrivate Keyword +hi def link goSnarkCircuitPublic Keyword +hi def link goSnarkCircuitInputName Special +hi def link goSnarkCircuitOut Special +hi def link goSnarkCircuitPrivatePublic Keyword + +let b:current_syntax = "go-snark-circuit" +if main_syntax == 'go-snark-circuit' + unlet main_syntax +endif +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8