From ad2409d37bdee5905bc534967df34dfcea1fcd08 Mon Sep 17 00:00:00 2001 From: Jim Zhang Date: Fri, 19 Jul 2024 15:04:17 -0400 Subject: [PATCH 1/9] Add sql storage support Signed-off-by: Jim Zhang --- zkp/golang/go.mod | 18 ++- zkp/golang/go.sum | 39 ++++- zkp/golang/integration-test/e2e_test.go | 103 +++++++++++++- zkp/golang/internal/storage/postgres.go_ | 0 zkp/golang/internal/storage/sql.go | 133 ++++++++++++++++++ zkp/golang/pkg/core/node.go | 26 ++++ zkp/golang/pkg/core/storage.go | 30 ++++ .../pkg/storage/{memory.go => storage.go} | 4 + 8 files changed, 349 insertions(+), 4 deletions(-) delete mode 100644 zkp/golang/internal/storage/postgres.go_ create mode 100644 zkp/golang/internal/storage/sql.go rename zkp/golang/pkg/storage/{memory.go => storage.go} (85%) diff --git a/zkp/golang/go.mod b/zkp/golang/go.mod index cce741b..266a7bd 100644 --- a/zkp/golang/go.mod +++ b/zkp/golang/go.mod @@ -7,7 +7,20 @@ require ( github.com/stretchr/testify v1.9.0 ) -require github.com/iden3/wasmer-go v0.0.1 // indirect +require ( + github.com/iden3/wasmer-go v0.0.1 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/pgx/v5 v5.5.5 // indirect + github.com/jackc/puddle/v2 v2.2.1 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/mattn/go-sqlite3 v1.14.22 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect + golang.org/x/sync v0.1.0 // indirect + golang.org/x/text v0.14.0 // indirect +) require ( github.com/davecgh/go-spew v1.1.1 // indirect @@ -20,4 +33,7 @@ require ( golang.org/x/crypto v0.17.0 // indirect golang.org/x/sys v0.15.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + gorm.io/driver/postgres v1.5.9 + gorm.io/driver/sqlite v1.5.6 + gorm.io/gorm v1.25.11 ) diff --git a/zkp/golang/go.sum b/zkp/golang/go.sum index 5e55229..d0fbdae 100644 --- a/zkp/golang/go.sum +++ b/zkp/golang/go.sum @@ -1,3 +1,5 @@ +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dchest/blake512 v1.0.0 h1:oDFEQFIqFSeuA34xLtXZ/rWxCXdSjirjzPhey5EUvmA= @@ -14,17 +16,52 @@ github.com/iden3/go-rapidsnark/witness/wasmer v0.0.0-20230524142950-0986cf057d4e github.com/iden3/go-rapidsnark/witness/wasmer v0.0.0-20230524142950-0986cf057d4e/go.mod h1:WUtPVKXrhfZHJXavwId2+8J/fKMHQ92N0MZDxt8sfEA= github.com/iden3/wasmer-go v0.0.1 h1:TZKh8Se8B/73PvWrcu+FTU9L1k5XYAmtFbioj7l0Uog= github.com/iden3/wasmer-go v0.0.1/go.mod h1:ZnZBAO012M7o+Q1INXLRIxKQgEcH2FuwL0Iga8A4ufg= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.5.5 h1:amBjrZVmksIdNjxGW/IiIMzxMKZFelXbUoPNb+8sjQw= +github.com/jackc/pgx/v5 v5.5.5/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A= +github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/postgres v1.5.9 h1:DkegyItji119OlcaLjqN11kHoUgZ/j13E0jkJZgD6A8= +gorm.io/driver/postgres v1.5.9/go.mod h1:DX3GReXH+3FPWGrrgffdvCk3DQ1dwDPdmbenSkweRGI= +gorm.io/driver/sqlite v1.5.6 h1:fO/X46qn5NUEEOZtnjJRWRzZMe8nqJiQ9E+0hi+hKQE= +gorm.io/driver/sqlite v1.5.6/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4= +gorm.io/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg= +gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= diff --git a/zkp/golang/integration-test/e2e_test.go b/zkp/golang/integration-test/e2e_test.go index 2f2e046..a5b770c 100644 --- a/zkp/golang/integration-test/e2e_test.go +++ b/zkp/golang/integration-test/e2e_test.go @@ -25,6 +25,7 @@ import ( "time" "github.com/hyperledger-labs/zeto/internal/testutils" + "github.com/hyperledger-labs/zeto/pkg/core" "github.com/hyperledger-labs/zeto/pkg/node" "github.com/hyperledger-labs/zeto/pkg/smt" "github.com/hyperledger-labs/zeto/pkg/storage" @@ -34,8 +35,13 @@ import ( "github.com/iden3/go-rapidsnark/witness/v2" "github.com/iden3/go-rapidsnark/witness/wasmer" "github.com/stretchr/testify/assert" + "gorm.io/driver/postgres" + "gorm.io/driver/sqlite" + "gorm.io/gorm" ) +const MAX_HEIGHT = 64 + func LoadCircuit(circuitName string) (witness.Calculator, []byte, error) { circuitRoot, exists := os.LookupEnv("CIRCUITS_ROOT") if !exists { @@ -203,7 +209,6 @@ func TestZeto_3_SuccessfulProving(t *testing.T) { nullifier2, _ := poseidon.Hash([]*big.Int{inputValues[1], salt2, sender.PrivateKeyBigInt}) nullifiers := []*big.Int{nullifier1, nullifier2} - MAX_HEIGHT := 64 mt, err := smt.NewMerkleTree(storage.NewMemoryStorage(), MAX_HEIGHT) assert.NoError(t, err) utxo1 := utxo.NewFungible(inputValues[0], sender.PublicKey, salt1) @@ -349,7 +354,6 @@ func TestZeto_5_SuccessfulProving(t *testing.T) { nullifier1, _ := poseidon.Hash([]*big.Int{tokenId, tokenUri, salt1, sender.PrivateKeyBigInt}) - MAX_HEIGHT := 64 mt, err := smt.NewMerkleTree(storage.NewMemoryStorage(), MAX_HEIGHT) assert.NoError(t, err) utxo1 := utxo.NewNonFungible(tokenId, tokenUri, sender.PublicKey, salt1) @@ -407,3 +411,98 @@ func TestZeto_5_SuccessfulProving(t *testing.T) { assert.Equal(t, 3, len(proof.Proof.C)) assert.Equal(t, 3, len(proof.PubSignals)) } + +type testSqlProvider struct { + db *gorm.DB +} + +func (s *testSqlProvider) DB() *gorm.DB { + return s.db +} + +func (s *testSqlProvider) Close() {} + +func TestSqliteStorage(t *testing.T) { + dbfile, err := os.CreateTemp("", "gorm.db") + assert.NoError(t, err) + defer func() { + os.Remove(dbfile.Name()) + }() + db, err := gorm.Open(sqlite.Open(dbfile.Name()), &gorm.Config{}) + assert.NoError(t, err) + db.Table("smtRoots").AutoMigrate(&core.SMTRoot{}) + db.Table("smtNodes_test_1").AutoMigrate(&core.SMTNode{}) + + provider := &testSqlProvider{db: db} + s, err := storage.NewSqlStorage(provider, "test_1") + assert.NoError(t, err) + + mt, err := smt.NewMerkleTree(s, MAX_HEIGHT) + assert.NoError(t, err) + + tokenId := big.NewInt(1001) + tokenUri, err := utxo.HashTokenUri("https://example.com/token/1001") + assert.NoError(t, err) + sender := testutils.NewKeypair() + salt1 := testutils.NewSalt() + + utxo1 := utxo.NewNonFungible(tokenId, tokenUri, sender.PublicKey, salt1) + n1, err := node.NewLeafNode(utxo1) + assert.NoError(t, err) + err = mt.AddLeaf(n1) + assert.NoError(t, err) + + root := mt.Root() + dbRoot := core.SMTRoot{Name: "test_1"} + err = db.Table("smtRoots").First(&dbRoot).Error + assert.NoError(t, err) + assert.Equal(t, root.Hex(), dbRoot.RootIndex) + + dbNode := core.SMTNode{RefKey: n1.Ref().Hex()} + err = db.Table("smtNodes_test_1").First(&dbNode).Error + assert.NoError(t, err) + assert.Equal(t, n1.Ref().Hex(), dbNode.RefKey) +} + +func TestPostgresStorage(t *testing.T) { + dsn := "host=localhost user=postgres password=my-secret dbname=postgres port=5432 sslmode=disable" + db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) + assert.NoError(t, err) + db.Table("smtRoots").AutoMigrate(&core.SMTRoot{}) + db.Table("smtNodes_test_1").AutoMigrate(&core.SMTNode{}) + + defer func() { + db.Exec("DROP TABLE smtRoots") + db.Exec("DROP TABLE smtNodes_test_1") + }() + + provider := &testSqlProvider{db: db} + s, err := storage.NewSqlStorage(provider, "test_1") + assert.NoError(t, err) + + mt, err := smt.NewMerkleTree(s, MAX_HEIGHT) + assert.NoError(t, err) + + tokenId := big.NewInt(1001) + tokenUri, err := utxo.HashTokenUri("https://example.com/token/1001") + assert.NoError(t, err) + sender := testutils.NewKeypair() + salt1 := testutils.NewSalt() + + utxo1 := utxo.NewNonFungible(tokenId, tokenUri, sender.PublicKey, salt1) + n1, err := node.NewLeafNode(utxo1) + assert.NoError(t, err) + err = mt.AddLeaf(n1) + assert.NoError(t, err) + + root := mt.Root() + dbRoot := core.SMTRoot{Name: "test_1"} + err = db.Table("smtRoots").First(&dbRoot).Error + assert.NoError(t, err) + assert.Equal(t, root.Hex(), dbRoot.RootIndex) + + dbNode := core.SMTNode{RefKey: n1.Ref().Hex()} + err = db.Table("smtNodes_test_1").First(&dbNode).Error + assert.NoError(t, err) + assert.Equal(t, n1.Ref().Hex(), dbNode.RefKey) +} diff --git a/zkp/golang/internal/storage/postgres.go_ b/zkp/golang/internal/storage/postgres.go_ deleted file mode 100644 index e69de29..0000000 diff --git a/zkp/golang/internal/storage/sql.go b/zkp/golang/internal/storage/sql.go new file mode 100644 index 0000000..99a640e --- /dev/null +++ b/zkp/golang/internal/storage/sql.go @@ -0,0 +1,133 @@ +// Copyright © 2024 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package storage + +import ( + "github.com/hyperledger-labs/zeto/internal/node" + "github.com/hyperledger-labs/zeto/internal/utxo" + "github.com/hyperledger-labs/zeto/pkg/core" + "gorm.io/gorm" +) + +const ( + // we use a table to store the root node indexes for + // all the merkle trees in the database + TreeRootsTable = "smtRoots" + // we use a separate table to store the nodes of each merkle tree + // by using the following name as the prefix, followed by the + // name of the tree + NodesTable_Prefix = "smtNodes_" +) + +type sqlStorage struct { + p core.SqlDBProvider + smtName string + nodesTableName string +} + +// NewSqlStorage creates a new sqlStorage instance +// The "smtName" is the name for the tree instance, it must +// be unique within the backend database instance +func NewSqlStorage(p core.SqlDBProvider, smtName string) *sqlStorage { + return &sqlStorage{ + p: p, + smtName: smtName, + nodesTableName: NodesTable_Prefix + smtName, + } +} + +func (s *sqlStorage) GetRootNodeIndex() (core.NodeIndex, error) { + root := core.SMTRoot{ + Name: s.smtName, + } + err := s.p.DB().Table(TreeRootsTable).First(&root).Error + if err == gorm.ErrRecordNotFound { + return nil, ErrNotFound + } else if err != nil { + return nil, err + } + idx, err := node.NewNodeIndexFromHex(root.RootIndex) + return idx, err +} + +func (m *sqlStorage) UpsertRootNodeIndex(root core.NodeIndex) error { + err := m.p.DB().Table(TreeRootsTable).Save(&core.SMTRoot{ + RootIndex: root.Hex(), + Name: m.smtName, + }).Error + return err +} + +func (m *sqlStorage) GetNode(ref core.NodeIndex) (core.Node, error) { + // the node's reference key (not the index) is used as the key to + // store the node in the DB + n := core.SMTNode{ + RefKey: ref.Hex(), + } + err := m.p.DB().Table(m.nodesTableName).First(&n).Error + if err == gorm.ErrRecordNotFound { + return nil, ErrNotFound + } else if err != nil { + return nil, err + } + var newNode core.Node + nodeType := core.NodeTypeFromByte(n.Type) + switch nodeType { + case core.NodeTypeLeaf: + idx, err := node.NewNodeIndexFromHex(*n.Index) + if err != nil { + return nil, err + } + v := utxo.NewIndexOnly(idx) + newNode, err = node.NewLeafNode(v) + case core.NodeTypeBranch: + leftChild, err := node.NewNodeIndexFromHex(*n.LeftChild) + if err != nil { + return nil, err + } + rightChild, err := node.NewNodeIndexFromHex(*n.RightChild) + if err != nil { + return nil, err + } + newNode, err = node.NewBranchNode(leftChild, rightChild) + } + return newNode, err +} + +func (m *sqlStorage) InsertNode(n core.Node) error { + // we clone the node so that the value properties are not saved + dbNode := &core.SMTNode{ + RefKey: n.Ref().Hex(), + Type: n.Type().ToByte(), + } + if n.Type() == core.NodeTypeBranch { + left := n.LeftChild().Hex() + dbNode.LeftChild = &left + right := n.RightChild().Hex() + dbNode.RightChild = &right + } else if n.Type() == core.NodeTypeLeaf { + idx := n.Index().Hex() + dbNode.Index = &idx + } + + err := m.p.DB().Table(m.nodesTableName).Create(dbNode).Error + return err +} + +func (m *sqlStorage) Close() { + m.p.Close() +} diff --git a/zkp/golang/pkg/core/node.go b/zkp/golang/pkg/core/node.go index 9ffda8c..e2c7b84 100644 --- a/zkp/golang/pkg/core/node.go +++ b/zkp/golang/pkg/core/node.go @@ -78,3 +78,29 @@ type Node interface { // returns the index of the right child. Only branch nodes have a right child. RightChild() NodeIndex } + +func (t NodeType) ToByte() byte { + switch t { + case NodeTypeEmpty: + return 0 + case NodeTypeBranch: + return 1 + case NodeTypeLeaf: + return 2 + default: + return 3 + } +} + +func NodeTypeFromByte(b byte) NodeType { + switch b { + case 0: + return NodeTypeEmpty + case 1: + return NodeTypeBranch + case 2: + return NodeTypeLeaf + default: + return NodeTypeEmpty + } +} diff --git a/zkp/golang/pkg/core/storage.go b/zkp/golang/pkg/core/storage.go index 004a4db..42ea3be 100644 --- a/zkp/golang/pkg/core/storage.go +++ b/zkp/golang/pkg/core/storage.go @@ -16,6 +16,8 @@ package core +import "gorm.io/gorm" + type Storage interface { // GetRootNodeIndex returns the root node index. // Must return an ErrNotFound error if it does not exist. @@ -31,3 +33,31 @@ type Storage interface { // Close closes the storage resource Close() } + +// SqlDBProvider is the interface for providing access to a SQL database to +// the storage layer implementations that are backed by a SQL database. +type SqlDBProvider interface { + DB() *gorm.DB + Close() +} + +// SMTRoot is used to persist tree root in SQL databases via gorm +type SMTRoot struct { + // the name of the merkle tree + Name string `gorm:"primaryKey"` + // this must be the hex bytes of the root index + // following the big-endian encoding + RootIndex string `gorm:"type:text"` +} + +// SMTNode is the structure of a node in the merkle tree. +// It only captures the reference key and the index of the node. +// The value properties of a node are local states that are +// handled outside of the merkle tree library. +type SMTNode struct { + RefKey string `gorm:"primaryKey"` + Type byte + Index *string // only leaf nodes have an index + LeftChild *string // only branch nodes have children + RightChild *string +} diff --git a/zkp/golang/pkg/storage/memory.go b/zkp/golang/pkg/storage/storage.go similarity index 85% rename from zkp/golang/pkg/storage/memory.go rename to zkp/golang/pkg/storage/storage.go index 1096d6d..cb12d5d 100644 --- a/zkp/golang/pkg/storage/memory.go +++ b/zkp/golang/pkg/storage/storage.go @@ -24,3 +24,7 @@ import ( func NewMemoryStorage() core.Storage { return storage.NewMemoryStorage() } + +func NewSqlStorage(provider core.SqlDBProvider, smtName string) (core.Storage, error) { + return storage.NewSqlStorage(provider, smtName), nil +} From 49c5b307e11b6b1e320c01f39e30d41e5867559d Mon Sep 17 00:00:00 2001 From: Jim Zhang Date: Mon, 22 Jul 2024 10:30:43 -0400 Subject: [PATCH 2/9] add readlock; unit test for concurrent insertions Signed-off-by: Jim Zhang --- zkp/golang/integration-test/e2e_test.go | 55 +++++++++++++++++++++++++ zkp/golang/internal/smt/merkletree.go | 49 +++++++++++++++------- 2 files changed, 89 insertions(+), 15 deletions(-) diff --git a/zkp/golang/integration-test/e2e_test.go b/zkp/golang/integration-test/e2e_test.go index a5b770c..a8c1a94 100644 --- a/zkp/golang/integration-test/e2e_test.go +++ b/zkp/golang/integration-test/e2e_test.go @@ -19,6 +19,7 @@ package integration_test import ( "fmt" "math/big" + "math/rand" "os" "path" "testing" @@ -30,6 +31,7 @@ import ( "github.com/hyperledger-labs/zeto/pkg/smt" "github.com/hyperledger-labs/zeto/pkg/storage" "github.com/hyperledger-labs/zeto/pkg/utxo" + "github.com/iden3/go-iden3-crypto/babyjub" "github.com/iden3/go-iden3-crypto/poseidon" "github.com/iden3/go-rapidsnark/prover" "github.com/iden3/go-rapidsnark/witness/v2" @@ -412,6 +414,59 @@ func TestZeto_5_SuccessfulProving(t *testing.T) { assert.Equal(t, 3, len(proof.PubSignals)) } +func TestConcurrentLeafnodesInsertion(t *testing.T) { + x, _ := new(big.Int).SetString("9198063289874244593808956064764348354864043212453245695133881114917754098693", 10) + y, _ := new(big.Int).SetString("3600411115173311692823743444460566395943576560299970643507632418781961416843", 10) + alice := &babyjub.PublicKey{ + X: x, + Y: y, + } + + values := []int{10, 20, 30, 40} + salts := []string{ + "43c49e8ba68a9b8a6bb5c230a734d8271a83d2f63722e7651272ebeef5446e", + "19b965f7629e4f0c4bd0b8f9c87f17580f18a32a31b4641550071ee4916bbbfc", + "9b0b93df975547e430eabff085a77831b8fcb6b5396e6bb815fda8d14125370", + "194ec10ec96a507c7c9b60df133d13679b874b0bd6ab89920135508f55b3f064", + } + + // run the test 10 times + for i := 0; i < 100; i++ { + // shuffle the utxos for this run + for i := range values { + j := rand.Intn(i + 1) + values[i], values[j] = values[j], values[i] + salts[i], salts[j] = salts[j], salts[i] + } + + testConcurrentInsertion(t, alice, values, salts) + } +} + +func testConcurrentInsertion(t *testing.T, alice *babyjub.PublicKey, values []int, salts []string) { + mt, err := smt.NewMerkleTree(storage.NewMemoryStorage(), MAX_HEIGHT) + assert.NoError(t, err) + done := make(chan bool, len(values)) + + for i, v := range values { + go func(i, v int) { + salt, _ := new(big.Int).SetString(salts[i], 16) + utxo := utxo.NewFungible(big.NewInt(int64(v)), alice, salt) + n, err := node.NewLeafNode(utxo) + assert.NoError(t, err) + err = mt.AddLeaf(n) + assert.NoError(t, err) + done <- true + }(i, v) + } + + for i := 0; i < len(values); i++ { + <-done + } + + assert.Equal(t, "abacf46f5217552ee28fe50b8fd7ca6aa46daeb9acf9f60928654c3b1a472f23", mt.Root().Hex()) +} + type testSqlProvider struct { db *gorm.DB } diff --git a/zkp/golang/internal/smt/merkletree.go b/zkp/golang/internal/smt/merkletree.go index 37600ef..a0b7b56 100644 --- a/zkp/golang/internal/smt/merkletree.go +++ b/zkp/golang/internal/smt/merkletree.go @@ -70,12 +70,19 @@ func (mt *sparseMerkleTree) AddLeaf(node core.Node) error { idx := node.Index() path := idx.ToPath(mt.maxLevels) + // find the lowest level of the tree that can accommodate this new leaf node + // by its unique index. This is done by traversing the tree from the root node + // down through the levels until a unique path is found. It doesn't necessarily + // use up all the bits in the index's path. As soon as a unique path is found, + // which may be only the first few bits of the index, the new leaf node is added. + // One or more branch nodes may be created to accommodate the new leaf node. newRootKey, err := mt.addLeaf(node, mt.rootKey, 0, path) if err != nil { return err } mt.rootKey = newRootKey + // update the root node index in the storage err = mt.db.UpsertRootNodeIndex(mt.rootKey) if err != nil { return err @@ -87,14 +94,9 @@ func (mt *sparseMerkleTree) AddLeaf(node core.Node) error { // GetNode gets a node by key from the merkle tree. Empty nodes are not stored in the // tree: they are all the same and assumed to always exist. func (mt *sparseMerkleTree) GetNode(key core.NodeIndex) (core.Node, error) { - if key.IsZero() { - return node.NewEmptyNode(), nil - } - node, err := mt.db.GetNode(key) - if err != nil { - return nil, err - } - return node, nil + mt.RLock() + defer mt.RUnlock() + return mt.getNode(key) } // GenerateProof generates the proof of existence (or non-existence) of a leaf node @@ -156,6 +158,19 @@ func (mt *sparseMerkleTree) GenerateProof(k *big.Int, rootKey core.NodeIndex) (c return nil, nil, ErrKeyNotFound } +// must be called from inside a read lock +func (mt *sparseMerkleTree) getNode(key core.NodeIndex) (core.Node, error) { + if key.IsZero() { + return node.NewEmptyNode(), nil + } + node, err := mt.db.GetNode(key) + if err != nil { + return nil, err + } + return node, nil +} + +// must be called from inside a write lock // addLeaf adds a new LeafNode to the MerkleTree. It starts with the current node. // - if the current node is empty, it adds the new leaf node at that location. // - if the current node is a leaf node, it means there's an existing node that shares @@ -174,14 +189,15 @@ func (mt *sparseMerkleTree) addLeaf(newLeaf core.Node, currentNodeIndex core.Nod } var nextKey core.NodeIndex - currentNode, err := mt.GetNode(currentNodeIndex) + currentNode, err := mt.getNode(currentNodeIndex) if err != nil { return nil, err } switch currentNode.Type() { case core.NodeTypeEmpty: - // We have searched to the bottom level and are ensured that - // the node doesn't exist yet. We can add the new leaf node + // We have searched to a level and have found a position in the + // index's path where the tree is empty. This means we have found + // the node that doesn't exist yet. We can add the new leaf node here return mt.addNode(newLeaf) case core.NodeTypeLeaf: nIndex := currentNode.Index() @@ -225,6 +241,7 @@ func (mt *sparseMerkleTree) addLeaf(newLeaf core.Node, currentNodeIndex core.Nod } } +// must be called from inside a write lock // addNode adds a node into the MT. Empty nodes are not stored in the tree; // they are all the same and assumed to always exist. func (mt *sparseMerkleTree) addNode(n core.Node) (core.NodeIndex, error) { @@ -240,6 +257,9 @@ func (mt *sparseMerkleTree) addNode(n core.Node) (core.NodeIndex, error) { return k, err } +// must be called from inside a write lock +// extendPath extends the path of two leaf nodes, which share the same beginnging part of +// their indexes, until their paths diverge, creating ancestor branch nodes as needed. func (mt *sparseMerkleTree) extendPath(newLeaf core.Node, oldLeaf core.Node, level int, pathNewLeaf []bool, pathOldLeaf []bool) (core.NodeIndex, error) { if level > mt.maxLevels-2 { return nil, ErrReachedMaxLevel @@ -289,9 +309,8 @@ func (mt *sparseMerkleTree) extendPath(newLeaf core.Node, oldLeaf core.Node, lev if err != nil { return nil, err } - // finally don't forget to add the new branch node that - // is the parent of the new leaf node to the DB. We also - // return this new branch node's key to allow the caller - // to create branch nodes as needed. + // finally don't forget to add the new branch node that is the parent of + // the new leaf node to the DB. We also return this new branch node's key + // to allow the caller to create branch nodes as needed. return mt.addNode(newBranchNode) } From 19ad1abf8235c76da2bd998defc905ba0137e077 Mon Sep 17 00:00:00 2001 From: Jim Zhang Date: Mon, 22 Jul 2024 13:49:53 -0400 Subject: [PATCH 3/9] Add read lock for mt.Root(); add verify tests Signed-off-by: Jim Zhang --- zkp/golang/internal/smt/merkletree.go | 9 +++-- zkp/golang/internal/smt/smt_test.go | 48 +++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/zkp/golang/internal/smt/merkletree.go b/zkp/golang/internal/smt/merkletree.go index a0b7b56..77307b6 100644 --- a/zkp/golang/internal/smt/merkletree.go +++ b/zkp/golang/internal/smt/merkletree.go @@ -59,6 +59,8 @@ func NewMerkleTree(db core.Storage, maxLevels int) (core.SparseMerkleTree, error } func (mt *sparseMerkleTree) Root() core.NodeIndex { + mt.RLock() + defer mt.RUnlock() return mt.rootKey } @@ -103,6 +105,9 @@ func (mt *sparseMerkleTree) GetNode(key core.NodeIndex) (core.Node, error) { // for a Merkle Tree given the root. It uses the node's index to represent the node. // If the rootKey is nil, the current merkletree root is used func (mt *sparseMerkleTree) GenerateProof(k *big.Int, rootKey core.NodeIndex) (core.Proof, *big.Int, error) { + mt.RLock() + defer mt.RUnlock() + p := &proof{} var siblingKey core.NodeIndex @@ -112,11 +117,11 @@ func (mt *sparseMerkleTree) GenerateProof(k *big.Int, rootKey core.NodeIndex) (c } path := kHash.ToPath(mt.maxLevels) if rootKey == nil { - rootKey = mt.Root() + rootKey = mt.rootKey } nextKey := rootKey for p.depth = 0; p.depth < uint(mt.maxLevels); p.depth++ { - n, err := mt.GetNode(nextKey) + n, err := mt.getNode(nextKey) if err != nil { return nil, nil, err } diff --git a/zkp/golang/internal/smt/smt_test.go b/zkp/golang/internal/smt/smt_test.go index 42c844c..c5e9670 100644 --- a/zkp/golang/internal/smt/smt_test.go +++ b/zkp/golang/internal/smt/smt_test.go @@ -17,13 +17,16 @@ package smt import ( + "fmt" "math/big" + "math/rand" "testing" "github.com/hyperledger-labs/zeto/internal/node" "github.com/hyperledger-labs/zeto/internal/storage" "github.com/hyperledger-labs/zeto/internal/testutils" "github.com/hyperledger-labs/zeto/internal/utxo" + "github.com/hyperledger-labs/zeto/pkg/core" "github.com/iden3/go-iden3-crypto/babyjub" "github.com/stretchr/testify/assert" ) @@ -144,3 +147,48 @@ func TestGenerateProof(t *testing.T) { assert.NoError(t, err) assert.False(t, proof3.IsOld0) } + +func TestVerifyProof(t *testing.T) { + const levels = 10 + db := storage.NewMemoryStorage() + mt, _ := NewMerkleTree(db, levels) + + alice := testutils.NewKeypair() + values := []int{10, 20, 30, 40, 50} + done := make(chan bool, len(values)) + startProving := make(chan core.Node, len(values)) + for idx, value := range values { + go func(v int) { + salt := rand.Intn(100000) + utxo := utxo.NewFungible(big.NewInt(int64(v)), alice.PublicKey, big.NewInt(int64(salt))) + node, err := node.NewLeafNode(utxo) + assert.NoError(t, err) + err = mt.AddLeaf(node) + assert.NoError(t, err) + startProving <- node + done <- true + fmt.Printf("Added node %d\n", idx) + }(value) + } + + go func() { + // trigger the proving process after 1 nodes are added + n := <-startProving + fmt.Println("Received node for proving") + + target := n.Index().BigInt() + root := mt.Root() + p, _, err := mt.GenerateProof(target, root) + assert.NoError(t, err) + assert.True(t, p.(*proof).existence) + + valid := VerifyProof(root, p, n) + assert.True(t, valid) + }() + + for i := 0; i < len(values); i++ { + <-done + } + + fmt.Println("All done") +} From bc40deb3d2d8517f3755b3b134120d31b9693ca1 Mon Sep 17 00:00:00 2001 From: Jim Zhang Date: Tue, 23 Jul 2024 12:57:50 -0400 Subject: [PATCH 4/9] Update inline comments for the merkle tree structure Signed-off-by: Jim Zhang --- zkp/golang/pkg/core/merkletree.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/zkp/golang/pkg/core/merkletree.go b/zkp/golang/pkg/core/merkletree.go index d05fe7f..70d47af 100644 --- a/zkp/golang/pkg/core/merkletree.go +++ b/zkp/golang/pkg/core/merkletree.go @@ -25,13 +25,13 @@ import "math/big" // // The tree is built from the root node, at level 0, down to the leaf nodes. // -// root level 0 -// / \ -// e f level 1 -// / \ / \ -// a b c d level 2 -// / \ / \ / \ / \ -// 1 2 3 4 5 - - - level 3 +// root level 0 +// / \ +// e f level 1 +// / \ / \ +// a b c d level 2 +// / \ / \ / \ / \ +// 1 2 3 4 5 - - - level 3 type SparseMerkleTree interface { // Root returns the root hash of the tree Root() NodeIndex From f7024ccc7192dfdfc230542deb361c3e09f77b07 Mon Sep 17 00:00:00 2001 From: Jim Zhang Date: Wed, 24 Jul 2024 11:05:16 -0400 Subject: [PATCH 5/9] Add GetNode() to the merkle tree interface Signed-off-by: Jim Zhang --- zkp/golang/pkg/core/merkletree.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/zkp/golang/pkg/core/merkletree.go b/zkp/golang/pkg/core/merkletree.go index 70d47af..de5447a 100644 --- a/zkp/golang/pkg/core/merkletree.go +++ b/zkp/golang/pkg/core/merkletree.go @@ -25,18 +25,20 @@ import "math/big" // // The tree is built from the root node, at level 0, down to the leaf nodes. // -// root level 0 -// / \ -// e f level 1 -// / \ / \ -// a b c d level 2 -// / \ / \ / \ / \ -// 1 2 3 4 5 - - - level 3 +// root level 0 +// / \ +// e f level 1 +// / \ / \ +// a b c d level 2 +// / \ / \ / \ / \ +// 1 2 3 4 5 - - - level 3 type SparseMerkleTree interface { // Root returns the root hash of the tree Root() NodeIndex // AddLeaf adds a key-value pair to the tree AddLeaf(Node) error + // GetNode returns the node at the given reference hash + GetNode(NodeIndex) (Node, error) // GetnerateProof generates a proof of existence (or non-existence) of a leaf node GenerateProof(*big.Int, NodeIndex) (Proof, *big.Int, error) } From 04def24e23a8b382b4eac00ea55eccf5a1f43e0b Mon Sep 17 00:00:00 2001 From: Jim Zhang Date: Wed, 24 Jul 2024 13:34:42 -0400 Subject: [PATCH 6/9] Add a new test case to the integration test for the anon_nullifier circuit Signed-off-by: Jim Zhang --- zkp/golang/integration-test/e2e_test.go | 90 ++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/zkp/golang/integration-test/e2e_test.go b/zkp/golang/integration-test/e2e_test.go index a8c1a94..e97ce1f 100644 --- a/zkp/golang/integration-test/e2e_test.go +++ b/zkp/golang/integration-test/e2e_test.go @@ -191,6 +191,92 @@ func TestZeto_2_SuccessfulProving(t *testing.T) { } func TestZeto_3_SuccessfulProving(t *testing.T) { + calc, provingKey, err := LoadCircuit("anon_nullifier") + assert.NoError(t, err) + assert.NotNil(t, calc) + + sender := testutils.NewKeypair() + receiver := testutils.NewKeypair() + + inputValues := []*big.Int{big.NewInt(30), big.NewInt(40)} + outputValues := []*big.Int{big.NewInt(32), big.NewInt(38)} + + salt1 := testutils.NewSalt() + input1, _ := poseidon.Hash([]*big.Int{inputValues[0], salt1, sender.PublicKey.X, sender.PublicKey.Y}) + salt2 := testutils.NewSalt() + input2, _ := poseidon.Hash([]*big.Int{inputValues[1], salt2, sender.PublicKey.X, sender.PublicKey.Y}) + inputCommitments := []*big.Int{input1, input2} + + nullifier1, _ := poseidon.Hash([]*big.Int{inputValues[0], salt1, sender.PrivateKeyBigInt}) + nullifier2, _ := poseidon.Hash([]*big.Int{inputValues[1], salt2, sender.PrivateKeyBigInt}) + nullifiers := []*big.Int{nullifier1, nullifier2} + + mt, err := smt.NewMerkleTree(storage.NewMemoryStorage(), MAX_HEIGHT) + assert.NoError(t, err) + utxo1 := utxo.NewFungible(inputValues[0], sender.PublicKey, salt1) + n1, err := node.NewLeafNode(utxo1) + assert.NoError(t, err) + err = mt.AddLeaf(n1) + assert.NoError(t, err) + utxo2 := utxo.NewFungible(inputValues[1], sender.PublicKey, salt2) + n2, err := node.NewLeafNode(utxo2) + assert.NoError(t, err) + err = mt.AddLeaf(n2) + assert.NoError(t, err) + proof1, _, err := mt.GenerateProof(input1, nil) + assert.NoError(t, err) + circomProof1, err := proof1.ToCircomVerifierProof(input1, input1, mt.Root(), MAX_HEIGHT) + assert.NoError(t, err) + proof2, _, err := mt.GenerateProof(input2, nil) + assert.NoError(t, err) + circomProof2, err := proof2.ToCircomVerifierProof(input2, input2, mt.Root(), MAX_HEIGHT) + assert.NoError(t, err) + + salt3 := testutils.NewSalt() + output1, _ := poseidon.Hash([]*big.Int{outputValues[0], salt3, receiver.PublicKey.X, receiver.PublicKey.Y}) + salt4 := testutils.NewSalt() + output2, _ := poseidon.Hash([]*big.Int{outputValues[1], salt4, sender.PublicKey.X, sender.PublicKey.Y}) + outputCommitments := []*big.Int{output1, output2} + + proof1Siblings := make([]*big.Int, len(circomProof1.Siblings)-1) + for i, s := range circomProof1.Siblings[0 : len(circomProof1.Siblings)-1] { + proof1Siblings[i] = s.BigInt() + } + proof2Siblings := make([]*big.Int, len(circomProof2.Siblings)-1) + for i, s := range circomProof2.Siblings[0 : len(circomProof2.Siblings)-1] { + proof2Siblings[i] = s.BigInt() + } + witnessInputs := map[string]interface{}{ + "nullifiers": nullifiers, + "inputCommitments": inputCommitments, + "inputValues": inputValues, + "inputSalts": []*big.Int{salt1, salt2}, + "inputOwnerPrivateKey": sender.PrivateKeyBigInt, + "root": mt.Root().BigInt(), + "merkleProof": [][]*big.Int{proof1Siblings, proof2Siblings}, + "enabled": []*big.Int{big.NewInt(1), big.NewInt(1)}, + "outputCommitments": outputCommitments, + "outputValues": outputValues, + "outputSalts": []*big.Int{salt3, salt4}, + "outputOwnerPublicKeys": [][]*big.Int{{receiver.PublicKey.X, receiver.PublicKey.Y}, {sender.PublicKey.X, sender.PublicKey.Y}}, + } + + startTime := time.Now() + witnessBin, err := calc.CalculateWTNSBin(witnessInputs, true) + assert.NoError(t, err) + assert.NotNil(t, witnessBin) + + proof, err := prover.Groth16Prover(provingKey, witnessBin) + elapsedTime := time.Since(startTime) + fmt.Printf("Proving time: %s\n", elapsedTime) + assert.NoError(t, err) + assert.Equal(t, 3, len(proof.Proof.A)) + assert.Equal(t, 3, len(proof.Proof.B)) + assert.Equal(t, 3, len(proof.Proof.C)) + assert.Equal(t, 7, len(proof.PubSignals)) +} + +func TestZeto_4_SuccessfulProving(t *testing.T) { calc, provingKey, err := LoadCircuit("anon_enc_nullifier") assert.NoError(t, err) assert.NotNil(t, calc) @@ -279,7 +365,7 @@ func TestZeto_3_SuccessfulProving(t *testing.T) { assert.Equal(t, 10, len(proof.PubSignals)) } -func TestZeto_4_SuccessfulProving(t *testing.T) { +func TestZeto_5_SuccessfulProving(t *testing.T) { calc, provingKey, err := LoadCircuit("nf_anon") assert.NoError(t, err) assert.NotNil(t, calc) @@ -338,7 +424,7 @@ func TestZeto_4_SuccessfulProving(t *testing.T) { assert.Equal(t, 2, len(proof.PubSignals)) } -func TestZeto_5_SuccessfulProving(t *testing.T) { +func TestZeto_6_SuccessfulProving(t *testing.T) { calc, provingKey, err := LoadCircuit("nf_anon_nullifier") assert.NoError(t, err) assert.NotNil(t, calc) From 810ff91fef964a9702910ab3d2534208a8de6301 Mon Sep 17 00:00:00 2001 From: Jim Zhang Date: Wed, 24 Jul 2024 18:22:20 -0400 Subject: [PATCH 7/9] Add nullifiers objects Signed-off-by: Jim Zhang --- zkp/golang/internal/utxo/fungible.go | 25 +++++++++++++++++++++++ zkp/golang/internal/utxo/nonfungible.go | 27 +++++++++++++++++++++++++ zkp/golang/pkg/utxo/utxo.go | 8 ++++++++ 3 files changed, 60 insertions(+) diff --git a/zkp/golang/internal/utxo/fungible.go b/zkp/golang/internal/utxo/fungible.go index e3f139e..250d7d4 100644 --- a/zkp/golang/internal/utxo/fungible.go +++ b/zkp/golang/internal/utxo/fungible.go @@ -46,3 +46,28 @@ func (f *Fungible) CalculateIndex() (core.NodeIndex, error) { } return node.NewNodeIndexFromBigInt(hash) } + +// the "Owner" is the private key that must be properly hashed and trimmed to be +// compatible with the BabyJub curve. +// Reference: https://github.com/iden3/circomlib/blob/master/test/babyjub.js#L103 +type FungibleNullifier struct { + Amount *big.Int + Owner *big.Int + Salt *big.Int +} + +func NewFungibleNullifier(amount *big.Int, owner *big.Int, salt *big.Int) *FungibleNullifier { + return &FungibleNullifier{ + Amount: amount, + Owner: owner, + Salt: salt, + } +} + +func (f *FungibleNullifier) CalculateIndex() (core.NodeIndex, error) { + hash, err := poseidon.Hash([]*big.Int{f.Amount, f.Salt, f.Owner}) + if err != nil { + return nil, err + } + return node.NewNodeIndexFromBigInt(hash) +} diff --git a/zkp/golang/internal/utxo/nonfungible.go b/zkp/golang/internal/utxo/nonfungible.go index aaf5a34..219ea93 100644 --- a/zkp/golang/internal/utxo/nonfungible.go +++ b/zkp/golang/internal/utxo/nonfungible.go @@ -51,6 +51,33 @@ func (f *NonFungible) CalculateIndex() (core.NodeIndex, error) { return node.NewNodeIndexFromBigInt(hash) } +// the "Owner" is the private key that must be properly hashed and trimmed to be +// compatible with the BabyJub curve. +// Reference: https://github.com/iden3/circomlib/blob/master/test/babyjub.js#L103 +type NonFungibleNullifier struct { + TokenId *big.Int + TokenUri *big.Int // hash of the token uri string + Owner *big.Int + Salt *big.Int +} + +func NewNonFungibleNullifier(tokenId, tokenUri *big.Int, owner *big.Int, salt *big.Int) *NonFungibleNullifier { + return &NonFungibleNullifier{ + TokenId: tokenId, + TokenUri: tokenUri, + Owner: owner, + Salt: salt, + } +} + +func (f *NonFungibleNullifier) CalculateIndex() (core.NodeIndex, error) { + hash, err := poseidon.Hash([]*big.Int{f.TokenId, f.TokenUri, f.Salt, f.Owner}) + if err != nil { + return nil, err + } + return node.NewNodeIndexFromBigInt(hash) +} + func HashTokenUri(tokenUri string) (*big.Int, error) { hash := sha256.New() _, err := hash.Write([]byte(tokenUri)) diff --git a/zkp/golang/pkg/utxo/utxo.go b/zkp/golang/pkg/utxo/utxo.go index 89c7509..46d4e46 100644 --- a/zkp/golang/pkg/utxo/utxo.go +++ b/zkp/golang/pkg/utxo/utxo.go @@ -32,6 +32,14 @@ func NewNonFungible(tokenId, tokenUri *big.Int, owner *babyjub.PublicKey, salt * return utxo.NewNonFungible(tokenId, tokenUri, owner, salt) } +func NewFungibleNullifier(amount *big.Int, owner *big.Int, salt *big.Int) core.Indexable { + return utxo.NewFungibleNullifier(amount, owner, salt) +} + +func NewNonFungibleNullifier(tokenId *big.Int, tokenUri *big.Int, owner *big.Int, salt *big.Int) core.Indexable { + return utxo.NewNonFungibleNullifier(tokenId, tokenUri, owner, salt) +} + func NewIndexOnly(index core.NodeIndex) core.Indexable { return utxo.NewIndexOnly(index) } From 0255683b8fd7b1df0847acf7778fc576fc9fd12a Mon Sep 17 00:00:00 2001 From: Jim Zhang Date: Thu, 25 Jul 2024 17:55:33 -0400 Subject: [PATCH 8/9] Add support for anchoring with an ERC20 contract with deposit and withdraw Signed-off-by: Jim Zhang --- solidity/contracts/erc20.sol | 40 + .../lib/verifier_check_hashes_value.sol | 177 + .../verifier_check_inputs_outputs_value.sol | 191 + .../lib/verifier_check_nullifier_value.sol | 212 + solidity/contracts/lib/zeto_base.sol | 16 +- solidity/contracts/lib/zeto_common.sol | 1 + solidity/contracts/lib/zeto_fungible.sol | 71 + .../contracts/lib/zeto_fungible_withdraw.sol | 70 + .../lib/zeto_fungible_withdraw_nullifier.sol | 74 + solidity/contracts/lib/zeto_nullifier.sol | 5 +- solidity/contracts/zeto_anon.sol | 46 +- solidity/contracts/zeto_anon_enc.sol | 46 +- .../contracts/zeto_anon_enc_nullifier.sol | 43 +- solidity/contracts/zeto_anon_nullifier.sol | 43 +- solidity/contracts/zeto_nf_anon.sol | 4 + solidity/contracts/zeto_nf_anon_nullifier.sol | 11 +- solidity/ignition/modules/erc20.ts | 22 + solidity/ignition/modules/zeto_anon.ts | 14 +- solidity/ignition/modules/zeto_anon_enc.ts | 14 +- .../modules/zeto_anon_enc_nullifier.ts | 14 +- .../ignition/modules/zeto_anon_nullifier.ts | 14 +- solidity/test/utils.ts | 128 + solidity/test/zeto_anon.ts | 41 +- solidity/test/zeto_anon_enc.ts | 39 +- solidity/test/zeto_anon_enc_nullifier.ts | 53 +- solidity/test/zeto_anon_nullifier.ts | 51 +- zkp/circuits/check_hashes_value.circom | 20 + .../check_inputs_outputs_value.circom | 20 + zkp/circuits/check_nullifier_value.circom | 20 + zkp/circuits/lib/check-hashes-value.circom | 76 + .../lib/check-inputs-outputs-value.circom | 129 + zkp/circuits/lib/check-nullifier-value.circom | 176 + zkp/js/README.md | 20 +- .../lib/anon_nullifier_js/anon_nullifier.wasm | Bin 3011576 -> 3011578 bytes zkp/js/lib/check_hashes_value.sym | 1221 + .../check_hashes_value.wasm | Bin 0 -> 1991240 bytes .../check_hashes_value_js/generate_witness.js | 20 + .../witness_calculator.js | 337 + zkp/js/lib/check_inputs_outputs_value.sym | 13676 ++ .../check_inputs_outputs_value.wasm | Bin 0 -> 2036891 bytes .../generate_witness.js | 20 + .../witness_calculator.js | 337 + zkp/js/lib/check_nullifier_value.sym | 128445 +++++++++++++++ .../check_nullifier_value.wasm | Bin 0 -> 3007670 bytes .../generate_witness.js | 20 + .../witness_calculator.js | 337 + zkp/js/test/anon_nullifier.js | 4 +- zkp/js/test/check_hashes_value.js | 184 + zkp/js/test/check_inputs_outputs_value.js | 168 + zkp/js/test/check_nullifier_value.js | 221 + 50 files changed, 146837 insertions(+), 54 deletions(-) create mode 100644 solidity/contracts/erc20.sol create mode 100644 solidity/contracts/lib/verifier_check_hashes_value.sol create mode 100644 solidity/contracts/lib/verifier_check_inputs_outputs_value.sol create mode 100644 solidity/contracts/lib/verifier_check_nullifier_value.sol create mode 100644 solidity/contracts/lib/zeto_fungible.sol create mode 100644 solidity/contracts/lib/zeto_fungible_withdraw.sol create mode 100644 solidity/contracts/lib/zeto_fungible_withdraw_nullifier.sol create mode 100644 solidity/ignition/modules/erc20.ts create mode 100644 zkp/circuits/check_hashes_value.circom create mode 100644 zkp/circuits/check_inputs_outputs_value.circom create mode 100644 zkp/circuits/check_nullifier_value.circom create mode 100644 zkp/circuits/lib/check-hashes-value.circom create mode 100644 zkp/circuits/lib/check-inputs-outputs-value.circom create mode 100644 zkp/circuits/lib/check-nullifier-value.circom create mode 100644 zkp/js/lib/check_hashes_value.sym create mode 100644 zkp/js/lib/check_hashes_value_js/check_hashes_value.wasm create mode 100644 zkp/js/lib/check_hashes_value_js/generate_witness.js create mode 100644 zkp/js/lib/check_hashes_value_js/witness_calculator.js create mode 100644 zkp/js/lib/check_inputs_outputs_value.sym create mode 100644 zkp/js/lib/check_inputs_outputs_value_js/check_inputs_outputs_value.wasm create mode 100644 zkp/js/lib/check_inputs_outputs_value_js/generate_witness.js create mode 100644 zkp/js/lib/check_inputs_outputs_value_js/witness_calculator.js create mode 100644 zkp/js/lib/check_nullifier_value.sym create mode 100644 zkp/js/lib/check_nullifier_value_js/check_nullifier_value.wasm create mode 100644 zkp/js/lib/check_nullifier_value_js/generate_witness.js create mode 100644 zkp/js/lib/check_nullifier_value_js/witness_calculator.js create mode 100644 zkp/js/test/check_hashes_value.js create mode 100644 zkp/js/test/check_inputs_outputs_value.js create mode 100644 zkp/js/test/check_nullifier_value.js diff --git a/solidity/contracts/erc20.sol b/solidity/contracts/erc20.sol new file mode 100644 index 0000000..2ecb619 --- /dev/null +++ b/solidity/contracts/erc20.sol @@ -0,0 +1,40 @@ +// Copyright © 2024 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +pragma solidity ^0.8.20; + +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "hardhat/console.sol"; + +/// @title A sample implementation of a Zeto based fungible token with anonymity and no encryption +/// @author Kaleido, Inc. +/// @dev The proof has the following statements: +/// - each value in the output commitments must be a positive number in the range 0 ~ (2\*\*40 - 1) +/// - the sum of the input values match the sum of output values +/// - the hashes in the input and output match the `hash(value, salt, owner public key)` formula +/// - the sender possesses the private BabyJubjub key, whose public key is part of the pre-image of the input commitment hashes +contract SampleERC20 is ERC20, Ownable { + constructor() + ERC20("Sample ERC20 token", "SampleERC20") + Ownable(msg.sender) + { + _mint(msg.sender, 1000000 * 10 ** 18); + } + + function mint(address to, uint256 amount) public onlyOwner { + _mint(to, amount); + } +} diff --git a/solidity/contracts/lib/verifier_check_hashes_value.sol b/solidity/contracts/lib/verifier_check_hashes_value.sol new file mode 100644 index 0000000..aa895d2 --- /dev/null +++ b/solidity/contracts/lib/verifier_check_hashes_value.sol @@ -0,0 +1,177 @@ +// SPDX-License-Identifier: GPL-3.0 +/* + Copyright 2021 0KIMS association. + + This file is generated with [snarkJS](https://github.com/iden3/snarkjs). + + snarkJS is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + snarkJS is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with snarkJS. If not, see . +*/ + +pragma solidity >=0.7.0 <0.9.0; + +contract Groth16Verifier_CheckValue { + // Scalar field size + uint256 constant r = 21888242871839275222246405745257275088548364400416034343698204186575808495617; + // Base field size + uint256 constant q = 21888242871839275222246405745257275088696311157297823662689037894645226208583; + + // Verification Key data + uint256 constant alphax = 20491192805390485299153009773594534940189261866228447918068658471970481763042; + uint256 constant alphay = 9383485363053290200918347156157836566562967994039712273449902621266178545958; + uint256 constant betax1 = 4252822878758300859123897981450591353533073413197771768651442665752259397132; + uint256 constant betax2 = 6375614351688725206403948262868962793625744043794305715222011528459656738731; + uint256 constant betay1 = 21847035105528745403288232691147584728191162732299865338377159692350059136679; + uint256 constant betay2 = 10505242626370262277552901082094356697409835680220590971873171140371331206856; + uint256 constant gammax1 = 11559732032986387107991004021392285783925812861821192530917403151452391805634; + uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; + uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; + uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; + uint256 constant deltax1 = 11559732032986387107991004021392285783925812861821192530917403151452391805634; + uint256 constant deltax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; + uint256 constant deltay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; + uint256 constant deltay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; + + + uint256 constant IC0x = 21353820865548503329577756525221633465332622166799959856825877352905192473267; + uint256 constant IC0y = 156932616567894649841337587302503574238981053813007972854040490364635182694; + + uint256 constant IC1x = 12322194858529188061062625971813098256741654889417169683222060161781584608609; + uint256 constant IC1y = 20246326882683168066748851145817053112674664250127727211412715232179245157022; + + uint256 constant IC2x = 8022016804019415581152964105487657307044363981768180695730643477130121229579; + uint256 constant IC2y = 15328789577726767026198857145765587783001722435319756601432638671812565154978; + + + // Memory data + uint16 constant pVk = 0; + uint16 constant pPairing = 128; + + uint16 constant pLastMem = 896; + + function verifyProof(uint[2] calldata _pA, uint[2][2] calldata _pB, uint[2] calldata _pC, uint[2] calldata _pubSignals) public view returns (bool) { + assembly { + function checkField(v) { + if iszero(lt(v, q)) { + mstore(0, 0) + return(0, 0x20) + } + } + + // G1 function to multiply a G1 value(x,y) to value in an address + function g1_mulAccC(pR, x, y, s) { + let success + let mIn := mload(0x40) + mstore(mIn, x) + mstore(add(mIn, 32), y) + mstore(add(mIn, 64), s) + + success := staticcall(sub(gas(), 2000), 7, mIn, 96, mIn, 64) + + if iszero(success) { + mstore(0, 0) + return(0, 0x20) + } + + mstore(add(mIn, 64), mload(pR)) + mstore(add(mIn, 96), mload(add(pR, 32))) + + success := staticcall(sub(gas(), 2000), 6, mIn, 128, pR, 64) + + if iszero(success) { + mstore(0, 0) + return(0, 0x20) + } + } + + function checkPairing(pA, pB, pC, pubSignals, pMem) -> isOk { + let _pPairing := add(pMem, pPairing) + let _pVk := add(pMem, pVk) + + mstore(_pVk, IC0x) + mstore(add(_pVk, 32), IC0y) + + // Compute the linear combination vk_x + + g1_mulAccC(_pVk, IC1x, IC1y, calldataload(add(pubSignals, 0))) + + g1_mulAccC(_pVk, IC2x, IC2y, calldataload(add(pubSignals, 32))) + + + // -A + mstore(_pPairing, calldataload(pA)) + mstore(add(_pPairing, 32), mod(sub(q, calldataload(add(pA, 32))), q)) + + // B + mstore(add(_pPairing, 64), calldataload(pB)) + mstore(add(_pPairing, 96), calldataload(add(pB, 32))) + mstore(add(_pPairing, 128), calldataload(add(pB, 64))) + mstore(add(_pPairing, 160), calldataload(add(pB, 96))) + + // alpha1 + mstore(add(_pPairing, 192), alphax) + mstore(add(_pPairing, 224), alphay) + + // beta2 + mstore(add(_pPairing, 256), betax1) + mstore(add(_pPairing, 288), betax2) + mstore(add(_pPairing, 320), betay1) + mstore(add(_pPairing, 352), betay2) + + // vk_x + mstore(add(_pPairing, 384), mload(add(pMem, pVk))) + mstore(add(_pPairing, 416), mload(add(pMem, add(pVk, 32)))) + + + // gamma2 + mstore(add(_pPairing, 448), gammax1) + mstore(add(_pPairing, 480), gammax2) + mstore(add(_pPairing, 512), gammay1) + mstore(add(_pPairing, 544), gammay2) + + // C + mstore(add(_pPairing, 576), calldataload(pC)) + mstore(add(_pPairing, 608), calldataload(add(pC, 32))) + + // delta2 + mstore(add(_pPairing, 640), deltax1) + mstore(add(_pPairing, 672), deltax2) + mstore(add(_pPairing, 704), deltay1) + mstore(add(_pPairing, 736), deltay2) + + + let success := staticcall(sub(gas(), 2000), 8, _pPairing, 768, _pPairing, 0x20) + + isOk := and(success, mload(_pPairing)) + } + + let pMem := mload(0x40) + mstore(0x40, add(pMem, pLastMem)) + + // Validate that all evaluations ∈ F + + checkField(calldataload(add(_pubSignals, 0))) + + checkField(calldataload(add(_pubSignals, 32))) + + checkField(calldataload(add(_pubSignals, 64))) + + + // Validate all evaluations + let isValid := checkPairing(_pA, _pB, _pC, _pubSignals, pMem) + + mstore(0, isValid) + return(0, 0x20) + } + } + } diff --git a/solidity/contracts/lib/verifier_check_inputs_outputs_value.sol b/solidity/contracts/lib/verifier_check_inputs_outputs_value.sol new file mode 100644 index 0000000..1b9945d --- /dev/null +++ b/solidity/contracts/lib/verifier_check_inputs_outputs_value.sol @@ -0,0 +1,191 @@ +// SPDX-License-Identifier: GPL-3.0 +/* + Copyright 2021 0KIMS association. + + This file is generated with [snarkJS](https://github.com/iden3/snarkjs). + + snarkJS is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + snarkJS is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with snarkJS. If not, see . +*/ + +pragma solidity >=0.7.0 <0.9.0; + +contract Groth16Verifier_CheckInputsOutputsValue { + // Scalar field size + uint256 constant r = 21888242871839275222246405745257275088548364400416034343698204186575808495617; + // Base field size + uint256 constant q = 21888242871839275222246405745257275088696311157297823662689037894645226208583; + + // Verification Key data + uint256 constant alphax = 20491192805390485299153009773594534940189261866228447918068658471970481763042; + uint256 constant alphay = 9383485363053290200918347156157836566562967994039712273449902621266178545958; + uint256 constant betax1 = 4252822878758300859123897981450591353533073413197771768651442665752259397132; + uint256 constant betax2 = 6375614351688725206403948262868962793625744043794305715222011528459656738731; + uint256 constant betay1 = 21847035105528745403288232691147584728191162732299865338377159692350059136679; + uint256 constant betay2 = 10505242626370262277552901082094356697409835680220590971873171140371331206856; + uint256 constant gammax1 = 11559732032986387107991004021392285783925812861821192530917403151452391805634; + uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; + uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; + uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; + uint256 constant deltax1 = 11559732032986387107991004021392285783925812861821192530917403151452391805634; + uint256 constant deltax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; + uint256 constant deltay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; + uint256 constant deltay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; + + + uint256 constant IC0x = 17387922327858210136617007095230042632426381952166484448116746614272536751535; + uint256 constant IC0y = 4808269916722279091167330560212980163487536845606246009253087821651013005551; + + uint256 constant IC1x = 11962741450402091371273662224482187613475715473047174085420945320695830737995; + uint256 constant IC1y = 15562574725663871801316953724005672455912364153659295220330094320410858196080; + + uint256 constant IC2x = 4194677006984027746737437054535462737447331455450175107486916659299631966883; + uint256 constant IC2y = 2965301361541939950387716753816670353588190783366000554173049564598213308644; + + uint256 constant IC3x = 16410371088360564861123282542907734207746899107639828095748274609891404450721; + uint256 constant IC3y = 14447287810519803612881548625236303993743219400827830956369634309751031524243; + + uint256 constant IC4x = 14479207206262402603061969459430305401687514000594863504679844985436934252961; + uint256 constant IC4y = 12009372897324578288882118575535211840587775246611243165708895311608262611745; + + + // Memory data + uint16 constant pVk = 0; + uint16 constant pPairing = 128; + + uint16 constant pLastMem = 896; + + function verifyProof(uint[2] calldata _pA, uint[2][2] calldata _pB, uint[2] calldata _pC, uint[4] calldata _pubSignals) public view returns (bool) { + assembly { + function checkField(v) { + if iszero(lt(v, q)) { + mstore(0, 0) + return(0, 0x20) + } + } + + // G1 function to multiply a G1 value(x,y) to value in an address + function g1_mulAccC(pR, x, y, s) { + let success + let mIn := mload(0x40) + mstore(mIn, x) + mstore(add(mIn, 32), y) + mstore(add(mIn, 64), s) + + success := staticcall(sub(gas(), 2000), 7, mIn, 96, mIn, 64) + + if iszero(success) { + mstore(0, 0) + return(0, 0x20) + } + + mstore(add(mIn, 64), mload(pR)) + mstore(add(mIn, 96), mload(add(pR, 32))) + + success := staticcall(sub(gas(), 2000), 6, mIn, 128, pR, 64) + + if iszero(success) { + mstore(0, 0) + return(0, 0x20) + } + } + + function checkPairing(pA, pB, pC, pubSignals, pMem) -> isOk { + let _pPairing := add(pMem, pPairing) + let _pVk := add(pMem, pVk) + + mstore(_pVk, IC0x) + mstore(add(_pVk, 32), IC0y) + + // Compute the linear combination vk_x + + g1_mulAccC(_pVk, IC1x, IC1y, calldataload(add(pubSignals, 0))) + + g1_mulAccC(_pVk, IC2x, IC2y, calldataload(add(pubSignals, 32))) + + g1_mulAccC(_pVk, IC3x, IC3y, calldataload(add(pubSignals, 64))) + + g1_mulAccC(_pVk, IC4x, IC4y, calldataload(add(pubSignals, 96))) + + + // -A + mstore(_pPairing, calldataload(pA)) + mstore(add(_pPairing, 32), mod(sub(q, calldataload(add(pA, 32))), q)) + + // B + mstore(add(_pPairing, 64), calldataload(pB)) + mstore(add(_pPairing, 96), calldataload(add(pB, 32))) + mstore(add(_pPairing, 128), calldataload(add(pB, 64))) + mstore(add(_pPairing, 160), calldataload(add(pB, 96))) + + // alpha1 + mstore(add(_pPairing, 192), alphax) + mstore(add(_pPairing, 224), alphay) + + // beta2 + mstore(add(_pPairing, 256), betax1) + mstore(add(_pPairing, 288), betax2) + mstore(add(_pPairing, 320), betay1) + mstore(add(_pPairing, 352), betay2) + + // vk_x + mstore(add(_pPairing, 384), mload(add(pMem, pVk))) + mstore(add(_pPairing, 416), mload(add(pMem, add(pVk, 32)))) + + + // gamma2 + mstore(add(_pPairing, 448), gammax1) + mstore(add(_pPairing, 480), gammax2) + mstore(add(_pPairing, 512), gammay1) + mstore(add(_pPairing, 544), gammay2) + + // C + mstore(add(_pPairing, 576), calldataload(pC)) + mstore(add(_pPairing, 608), calldataload(add(pC, 32))) + + // delta2 + mstore(add(_pPairing, 640), deltax1) + mstore(add(_pPairing, 672), deltax2) + mstore(add(_pPairing, 704), deltay1) + mstore(add(_pPairing, 736), deltay2) + + + let success := staticcall(sub(gas(), 2000), 8, _pPairing, 768, _pPairing, 0x20) + + isOk := and(success, mload(_pPairing)) + } + + let pMem := mload(0x40) + mstore(0x40, add(pMem, pLastMem)) + + // Validate that all evaluations ∈ F + + checkField(calldataload(add(_pubSignals, 0))) + + checkField(calldataload(add(_pubSignals, 32))) + + checkField(calldataload(add(_pubSignals, 64))) + + checkField(calldataload(add(_pubSignals, 96))) + + checkField(calldataload(add(_pubSignals, 128))) + + + // Validate all evaluations + let isValid := checkPairing(_pA, _pB, _pC, _pubSignals, pMem) + + mstore(0, isValid) + return(0, 0x20) + } + } + } diff --git a/solidity/contracts/lib/verifier_check_nullifier_value.sol b/solidity/contracts/lib/verifier_check_nullifier_value.sol new file mode 100644 index 0000000..d32a97f --- /dev/null +++ b/solidity/contracts/lib/verifier_check_nullifier_value.sol @@ -0,0 +1,212 @@ +// SPDX-License-Identifier: GPL-3.0 +/* + Copyright 2021 0KIMS association. + + This file is generated with [snarkJS](https://github.com/iden3/snarkjs). + + snarkJS is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + snarkJS is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with snarkJS. If not, see . +*/ + +pragma solidity >=0.7.0 <0.9.0; + +contract Groth16Verifier_CheckNullifierValue { + // Scalar field size + uint256 constant r = 21888242871839275222246405745257275088548364400416034343698204186575808495617; + // Base field size + uint256 constant q = 21888242871839275222246405745257275088696311157297823662689037894645226208583; + + // Verification Key data + uint256 constant alphax = 20491192805390485299153009773594534940189261866228447918068658471970481763042; + uint256 constant alphay = 9383485363053290200918347156157836566562967994039712273449902621266178545958; + uint256 constant betax1 = 4252822878758300859123897981450591353533073413197771768651442665752259397132; + uint256 constant betax2 = 6375614351688725206403948262868962793625744043794305715222011528459656738731; + uint256 constant betay1 = 21847035105528745403288232691147584728191162732299865338377159692350059136679; + uint256 constant betay2 = 10505242626370262277552901082094356697409835680220590971873171140371331206856; + uint256 constant gammax1 = 11559732032986387107991004021392285783925812861821192530917403151452391805634; + uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; + uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; + uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; + uint256 constant deltax1 = 11559732032986387107991004021392285783925812861821192530917403151452391805634; + uint256 constant deltax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; + uint256 constant deltay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; + uint256 constant deltay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; + + + uint256 constant IC0x = 15492418976489076016744712039228991049119912955688524102804299454656267186009; + uint256 constant IC0y = 6683516575201125125993199841635988477061644803076780133772345536623987263585; + + uint256 constant IC1x = 20388809982110581159758837462045964857853052490510219178487821131497955197485; + uint256 constant IC1y = 11559017693629947025935312317037014128873998602028720842466005215803981949488; + + uint256 constant IC2x = 13435481798396867294149705853505335939788917619623055020026965426090811440436; + uint256 constant IC2y = 19014602589838621389539780295053756982599159926216043076756080339477593928267; + + uint256 constant IC3x = 9101308846546712061385480237991349242785040605257963609786960558441532043575; + uint256 constant IC3y = 20162065319211808084372980649366363483528315362920428034950134764348551061576; + + uint256 constant IC4x = 1862728518597969644991754874217991793768978626842292905952230489753317456943; + uint256 constant IC4y = 13827959089691652056820043159766605451401208772931308660944601538220427688001; + + uint256 constant IC5x = 12595562902478113608580909807915007505100194716952840137066159851175855515947; + uint256 constant IC5y = 20219788329832744328203670585885257301041964037877146487338583938337874848685; + + uint256 constant IC6x = 15493536898701008011127294879458488796153705332302588952751125522877852961647; + uint256 constant IC6y = 1788009749667942434387844456635362080454534277559959103723491751055982698041; + + uint256 constant IC7x = 2534369505154061360258866279946256857360053453543228810913826185688221321445; + uint256 constant IC7y = 15777401174389130350272102012636311458122823507269563590772434670217407958669; + + + // Memory data + uint16 constant pVk = 0; + uint16 constant pPairing = 128; + + uint16 constant pLastMem = 896; + + function verifyProof(uint[2] calldata _pA, uint[2][2] calldata _pB, uint[2] calldata _pC, uint[7] calldata _pubSignals) public view returns (bool) { + assembly { + function checkField(v) { + if iszero(lt(v, q)) { + mstore(0, 0) + return(0, 0x20) + } + } + + // G1 function to multiply a G1 value(x,y) to value in an address + function g1_mulAccC(pR, x, y, s) { + let success + let mIn := mload(0x40) + mstore(mIn, x) + mstore(add(mIn, 32), y) + mstore(add(mIn, 64), s) + + success := staticcall(sub(gas(), 2000), 7, mIn, 96, mIn, 64) + + if iszero(success) { + mstore(0, 0) + return(0, 0x20) + } + + mstore(add(mIn, 64), mload(pR)) + mstore(add(mIn, 96), mload(add(pR, 32))) + + success := staticcall(sub(gas(), 2000), 6, mIn, 128, pR, 64) + + if iszero(success) { + mstore(0, 0) + return(0, 0x20) + } + } + + function checkPairing(pA, pB, pC, pubSignals, pMem) -> isOk { + let _pPairing := add(pMem, pPairing) + let _pVk := add(pMem, pVk) + + mstore(_pVk, IC0x) + mstore(add(_pVk, 32), IC0y) + + // Compute the linear combination vk_x + + g1_mulAccC(_pVk, IC1x, IC1y, calldataload(add(pubSignals, 0))) + + g1_mulAccC(_pVk, IC2x, IC2y, calldataload(add(pubSignals, 32))) + + g1_mulAccC(_pVk, IC3x, IC3y, calldataload(add(pubSignals, 64))) + + g1_mulAccC(_pVk, IC4x, IC4y, calldataload(add(pubSignals, 96))) + + g1_mulAccC(_pVk, IC5x, IC5y, calldataload(add(pubSignals, 128))) + + g1_mulAccC(_pVk, IC6x, IC6y, calldataload(add(pubSignals, 160))) + + g1_mulAccC(_pVk, IC7x, IC7y, calldataload(add(pubSignals, 192))) + + + // -A + mstore(_pPairing, calldataload(pA)) + mstore(add(_pPairing, 32), mod(sub(q, calldataload(add(pA, 32))), q)) + + // B + mstore(add(_pPairing, 64), calldataload(pB)) + mstore(add(_pPairing, 96), calldataload(add(pB, 32))) + mstore(add(_pPairing, 128), calldataload(add(pB, 64))) + mstore(add(_pPairing, 160), calldataload(add(pB, 96))) + + // alpha1 + mstore(add(_pPairing, 192), alphax) + mstore(add(_pPairing, 224), alphay) + + // beta2 + mstore(add(_pPairing, 256), betax1) + mstore(add(_pPairing, 288), betax2) + mstore(add(_pPairing, 320), betay1) + mstore(add(_pPairing, 352), betay2) + + // vk_x + mstore(add(_pPairing, 384), mload(add(pMem, pVk))) + mstore(add(_pPairing, 416), mload(add(pMem, add(pVk, 32)))) + + + // gamma2 + mstore(add(_pPairing, 448), gammax1) + mstore(add(_pPairing, 480), gammax2) + mstore(add(_pPairing, 512), gammay1) + mstore(add(_pPairing, 544), gammay2) + + // C + mstore(add(_pPairing, 576), calldataload(pC)) + mstore(add(_pPairing, 608), calldataload(add(pC, 32))) + + // delta2 + mstore(add(_pPairing, 640), deltax1) + mstore(add(_pPairing, 672), deltax2) + mstore(add(_pPairing, 704), deltay1) + mstore(add(_pPairing, 736), deltay2) + + + let success := staticcall(sub(gas(), 2000), 8, _pPairing, 768, _pPairing, 0x20) + + isOk := and(success, mload(_pPairing)) + } + + let pMem := mload(0x40) + mstore(0x40, add(pMem, pLastMem)) + + // Validate that all evaluations ∈ F + + checkField(calldataload(add(_pubSignals, 0))) + + checkField(calldataload(add(_pubSignals, 32))) + + checkField(calldataload(add(_pubSignals, 64))) + + checkField(calldataload(add(_pubSignals, 96))) + + checkField(calldataload(add(_pubSignals, 128))) + + checkField(calldataload(add(_pubSignals, 160))) + + checkField(calldataload(add(_pubSignals, 192))) + + checkField(calldataload(add(_pubSignals, 224))) + + + // Validate all evaluations + let isValid := checkPairing(_pA, _pB, _pC, _pubSignals, pMem) + + mstore(0, isValid) + return(0, 0x20) + } + } + } diff --git a/solidity/contracts/lib/zeto_base.sol b/solidity/contracts/lib/zeto_base.sol index bf5981d..7bf0190 100644 --- a/solidity/contracts/lib/zeto_base.sol +++ b/solidity/contracts/lib/zeto_base.sol @@ -19,6 +19,7 @@ import {Commonlib} from "./common.sol"; import {Registry} from "./registry.sol"; import {ZetoCommon} from "./zeto_common.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; /// @title A sample base implementation of a Zeto based token contract /// without using nullifiers. Each UTXO's spending status is explicitly tracked. @@ -96,9 +97,22 @@ abstract contract ZetoBase is ZetoCommon { return true; } + function processInputsAndOutputs( + uint256[2] memory inputs, + uint256[2] memory outputs + ) internal { + // accept the transaction to consume the input UTXOs and produce new UTXOs + for (uint256 i = 0; i < inputs.length; ++i) { + _utxos[inputs[i]] = UTXOStatus.SPENT; + } + for (uint256 i = 0; i < outputs.length; ++i) { + _utxos[outputs[i]] = UTXOStatus.UNSPENT; + } + } + // This function is used to mint new UTXOs, as an example implementation, // which is only callable by the owner. - function mint(uint256[] memory utxos) public virtual onlyOwner { + function _mint(uint256[] memory utxos) internal virtual { for (uint256 i = 0; i < utxos.length; ++i) { uint256 utxo = utxos[i]; if (_utxos[utxo] == UTXOStatus.UNSPENT) { diff --git a/solidity/contracts/lib/zeto_common.sol b/solidity/contracts/lib/zeto_common.sol index d6ec992..3d661ba 100644 --- a/solidity/contracts/lib/zeto_common.sol +++ b/solidity/contracts/lib/zeto_common.sol @@ -17,6 +17,7 @@ pragma solidity ^0.8.20; import {Commonlib} from "./common.sol"; import {Registry} from "./registry.sol"; +import {Groth16Verifier_CheckValue} from "./verifier_check_hashes_value.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; /// @title A sample base implementation of a Zeto based token contract diff --git a/solidity/contracts/lib/zeto_fungible.sol b/solidity/contracts/lib/zeto_fungible.sol new file mode 100644 index 0000000..65344f2 --- /dev/null +++ b/solidity/contracts/lib/zeto_fungible.sol @@ -0,0 +1,71 @@ +// Copyright © 2024 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +pragma solidity ^0.8.20; + +import {Groth16Verifier_CheckValue} from "./verifier_check_hashes_value.sol"; +import {Groth16Verifier_CheckNullifierValue} from "./verifier_check_nullifier_value.sol"; +import {Commonlib} from "./common.sol"; +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; + +/// @title A sample implementation of a base Zeto fungible token contract +/// @author Kaleido, Inc. +/// @dev Defines the verifier library for checking UTXOs against a claimed value. +abstract contract ZetoFungible is Ownable { + // depositVerifier library for checking UTXOs against a claimed value. + // this can be used in the optional deposit calls to verify that + // the UTXOs match the deposited value + Groth16Verifier_CheckValue internal depositVerifier; + + IERC20 internal erc20; + + constructor(Groth16Verifier_CheckValue _depositVerifier) { + depositVerifier = _depositVerifier; + } + + function setERC20(IERC20 _erc20) public onlyOwner { + erc20 = _erc20; + } + + function _deposit( + uint256 amount, + uint256 utxo, + Commonlib.Proof calldata proof + ) public virtual { + // verifies that the output UTXOs match the claimed value + // to be deposited + // construct the public inputs + uint256[2] memory publicInputs; + publicInputs[0] = amount; + publicInputs[1] = utxo; + + // // Check the proof + require( + depositVerifier.verifyProof( + proof.pA, + proof.pB, + proof.pC, + publicInputs + ), + "Invalid proof" + ); + + require( + erc20.transferFrom(msg.sender, address(this), amount), + "Failed to transfer ERC20 tokens" + ); + } +} diff --git a/solidity/contracts/lib/zeto_fungible_withdraw.sol b/solidity/contracts/lib/zeto_fungible_withdraw.sol new file mode 100644 index 0000000..76d7b14 --- /dev/null +++ b/solidity/contracts/lib/zeto_fungible_withdraw.sol @@ -0,0 +1,70 @@ +// Copyright © 2024 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +pragma solidity ^0.8.20; + +import {Groth16Verifier_CheckValue} from "./verifier_check_hashes_value.sol"; +import {Groth16Verifier_CheckInputsOutputsValue} from "./verifier_check_inputs_outputs_value.sol"; +import {ZetoFungible} from "./zeto_fungible.sol"; +import {Commonlib} from "./common.sol"; +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; + +/// @title A sample implementation of a base Zeto fungible token contract +/// @author Kaleido, Inc. +/// @dev Defines the verifier library for checking UTXOs against a claimed value. +abstract contract ZetoFungibleWithdraw is ZetoFungible { + // nullifierVerifier library for checking nullifiers against a claimed value. + // this can be used in the optional withdraw calls to verify that the nullifiers + // match the withdrawn value + Groth16Verifier_CheckInputsOutputsValue internal withdrawVerifier; + + constructor( + Groth16Verifier_CheckValue _depositVerifier, + Groth16Verifier_CheckInputsOutputsValue _withdrawVerifier + ) ZetoFungible(_depositVerifier) { + withdrawVerifier = _withdrawVerifier; + } + + function _withdraw( + uint256 amount, + uint256[2] memory inputs, + uint256 output, + Commonlib.Proof calldata proof + ) public virtual { + // construct the public inputs + uint256[4] memory publicInputs; + publicInputs[0] = amount; + publicInputs[1] = inputs[0]; + publicInputs[2] = inputs[1]; + publicInputs[3] = output; + + // Check the proof + require( + withdrawVerifier.verifyProof( + proof.pA, + proof.pB, + proof.pC, + publicInputs + ), + "Invalid proof" + ); + + require( + erc20.transfer(msg.sender, amount), + "Failed to transfer ERC20 tokens" + ); + } +} diff --git a/solidity/contracts/lib/zeto_fungible_withdraw_nullifier.sol b/solidity/contracts/lib/zeto_fungible_withdraw_nullifier.sol new file mode 100644 index 0000000..98928eb --- /dev/null +++ b/solidity/contracts/lib/zeto_fungible_withdraw_nullifier.sol @@ -0,0 +1,74 @@ +// Copyright © 2024 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +pragma solidity ^0.8.20; + +import {Groth16Verifier_CheckValue} from "./verifier_check_hashes_value.sol"; +import {Groth16Verifier_CheckNullifierValue} from "./verifier_check_nullifier_value.sol"; +import {ZetoFungible} from "./zeto_fungible.sol"; +import {Commonlib} from "./common.sol"; +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; + +/// @title A sample implementation of a base Zeto fungible token contract +/// @author Kaleido, Inc. +/// @dev Defines the verifier library for checking UTXOs against a claimed value. +abstract contract ZetoFungibleWithdrawWithNullifiers is ZetoFungible { + // nullifierVerifier library for checking nullifiers against a claimed value. + // this can be used in the optional withdraw calls to verify that the nullifiers + // match the withdrawn value + Groth16Verifier_CheckNullifierValue internal withdrawVerifier; + + constructor( + Groth16Verifier_CheckValue _depositVerifier, + Groth16Verifier_CheckNullifierValue _withdrawVerifier + ) ZetoFungible(_depositVerifier) { + withdrawVerifier = _withdrawVerifier; + } + + function _withdrawWithNullifiers( + uint256 amount, + uint256[2] memory nullifiers, + uint256 output, + uint256 root, + Commonlib.Proof calldata proof + ) public virtual { + // construct the public inputs + uint256[7] memory publicInputs; + publicInputs[0] = amount; + publicInputs[1] = nullifiers[0]; + publicInputs[2] = nullifiers[1]; + publicInputs[3] = root; + publicInputs[4] = (nullifiers[0] == 0) ? 0 : 1; // enable MT proof for the first nullifier + publicInputs[5] = (nullifiers[1] == 0) ? 0 : 1; // enable MT proof for the second nullifier + publicInputs[6] = output; + + // Check the proof + require( + withdrawVerifier.verifyProof( + proof.pA, + proof.pB, + proof.pC, + publicInputs + ), + "Invalid proof" + ); + + require( + erc20.transfer(msg.sender, amount), + "Failed to transfer ERC20 tokens" + ); + } +} diff --git a/solidity/contracts/lib/zeto_nullifier.sol b/solidity/contracts/lib/zeto_nullifier.sol index 18ad17d..416b18f 100644 --- a/solidity/contracts/lib/zeto_nullifier.sol +++ b/solidity/contracts/lib/zeto_nullifier.sol @@ -41,8 +41,7 @@ abstract contract ZetoNullifier is ZetoCommon { function validateTransactionProposal( uint256[2] memory nullifiers, uint256[2] memory outputs, - uint256 root, - Commonlib.Proof calldata proof + uint256 root ) internal view returns (bool) { // sort the inputs and outputs to detect duplicates ( @@ -108,7 +107,7 @@ abstract contract ZetoNullifier is ZetoCommon { // This function is used to mint new UTXOs, as an example implementation, // which is only callable by the owner. - function mint(uint256[] memory utxos) public onlyOwner { + function _mint(uint256[] memory utxos) internal virtual { for (uint256 i = 0; i < utxos.length; ++i) { uint256 utxo = utxos[i]; uint256 nodeHash = _getLeafNodeHash(utxo); diff --git a/solidity/contracts/zeto_anon.sol b/solidity/contracts/zeto_anon.sol index f05fb5e..2b7e47a 100644 --- a/solidity/contracts/zeto_anon.sol +++ b/solidity/contracts/zeto_anon.sol @@ -15,10 +15,14 @@ // limitations under the License. pragma solidity ^0.8.20; +import {Groth16Verifier_CheckValue} from "./lib/verifier_check_hashes_value.sol"; +import {Groth16Verifier_CheckInputsOutputsValue} from "./lib/verifier_check_inputs_outputs_value.sol"; import {Groth16Verifier_Anon} from "./lib/verifier_anon.sol"; import {Registry} from "./lib/registry.sol"; import {Commonlib} from "./lib/common.sol"; import {ZetoBase} from "./lib/zeto_base.sol"; +import {ZetoFungible} from "./lib/zeto_fungible.sol"; +import {ZetoFungibleWithdraw} from "./lib/zeto_fungible_withdraw.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import "hardhat/console.sol"; @@ -29,13 +33,18 @@ import "hardhat/console.sol"; /// - the sum of the input values match the sum of output values /// - the hashes in the input and output match the `hash(value, salt, owner public key)` formula /// - the sender possesses the private BabyJubjub key, whose public key is part of the pre-image of the input commitment hashes -contract Zeto_Anon is ZetoBase { +contract Zeto_Anon is ZetoBase, ZetoFungibleWithdraw { Groth16Verifier_Anon internal verifier; constructor( + Groth16Verifier_CheckValue _depositVerifier, + Groth16Verifier_CheckInputsOutputsValue _withdrawVerifier, Groth16Verifier_Anon _verifier, Registry _registry - ) ZetoBase(_registry) { + ) + ZetoBase(_registry) + ZetoFungibleWithdraw(_depositVerifier, _withdrawVerifier) + { verifier = _verifier; } @@ -72,13 +81,7 @@ contract Zeto_Anon is ZetoBase { "Invalid proof" ); - // accept the transaction to consume the input UTXOs and produce new UTXOs - for (uint256 i = 0; i < inputs.length; ++i) { - _utxos[inputs[i]] = UTXOStatus.SPENT; - } - for (uint256 i = 0; i < outputs.length; ++i) { - _utxos[outputs[i]] = UTXOStatus.UNSPENT; - } + processInputsAndOutputs(inputs, outputs); uint256[] memory inputArray = new uint256[](inputs.length); uint256[] memory outputArray = new uint256[](outputs.length); @@ -90,4 +93,29 @@ contract Zeto_Anon is ZetoBase { return true; } + + function deposit( + uint256 amount, + uint256 utxo, + Commonlib.Proof calldata proof + ) public { + _deposit(amount, utxo, proof); + uint256[] memory utxos = new uint256[](1); + utxos[0] = utxo; + _mint(utxos); + } + + function withdraw( + uint256 amount, + uint256[2] memory inputs, + uint256 output, + Commonlib.Proof calldata proof + ) public { + _withdraw(amount, inputs, output, proof); + processInputsAndOutputs(inputs, [output, 0]); + } + + function mint(uint256[] memory utxos) public onlyOwner { + _mint(utxos); + } } diff --git a/solidity/contracts/zeto_anon_enc.sol b/solidity/contracts/zeto_anon_enc.sol index c29e671..14dc411 100644 --- a/solidity/contracts/zeto_anon_enc.sol +++ b/solidity/contracts/zeto_anon_enc.sol @@ -15,8 +15,12 @@ // limitations under the License. pragma solidity ^0.8.20; +import {Groth16Verifier_CheckValue} from "./lib/verifier_check_hashes_value.sol"; +import {Groth16Verifier_CheckInputsOutputsValue} from "./lib/verifier_check_inputs_outputs_value.sol"; import {Groth16Verifier_AnonEnc} from "./lib/verifier_anon_enc.sol"; +import {ZetoFungibleWithdraw} from "./lib/zeto_fungible_withdraw.sol"; import {ZetoBase} from "./lib/zeto_base.sol"; +import {ZetoFungible} from "./lib/zeto_fungible.sol"; import {Registry} from "./lib/registry.sol"; import {Commonlib} from "./lib/common.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; @@ -31,13 +35,18 @@ import "hardhat/console.sol"; /// - the sender possesses the private BabyJubjub key, whose public key is part of the pre-image of the input commitment hashes /// - the encrypted value in the input is derived from the receiver's UTXO value and encrypted with a shared secret using /// the ECDH protocol between the sender and receiver (this guarantees data availability for the receiver) -contract Zeto_AnonEnc is ZetoBase { +contract Zeto_AnonEnc is ZetoBase, ZetoFungibleWithdraw { Groth16Verifier_AnonEnc internal verifier; constructor( + Groth16Verifier_CheckValue _depositVerifier, + Groth16Verifier_CheckInputsOutputsValue _withdrawVerifier, Groth16Verifier_AnonEnc _verifier, Registry _registry - ) ZetoBase(_registry) { + ) + ZetoBase(_registry) + ZetoFungibleWithdraw(_depositVerifier, _withdrawVerifier) + { verifier = _verifier; } @@ -79,13 +88,7 @@ contract Zeto_AnonEnc is ZetoBase { "Invalid proof" ); - // accept the transaction to consume the input UTXOs and produce new UTXOs - for (uint256 i = 0; i < inputs.length; ++i) { - _utxos[inputs[i]] = UTXOStatus.SPENT; - } - for (uint256 i = 0; i < outputs.length; ++i) { - _utxos[outputs[i]] = UTXOStatus.UNSPENT; - } + processInputsAndOutputs(inputs, outputs); uint256[] memory inputArray = new uint256[](inputs.length); uint256[] memory outputArray = new uint256[](outputs.length); @@ -107,4 +110,29 @@ contract Zeto_AnonEnc is ZetoBase { ); return true; } + + function deposit( + uint256 amount, + uint256 utxo, + Commonlib.Proof calldata proof + ) public { + _deposit(amount, utxo, proof); + uint256[] memory utxos = new uint256[](1); + utxos[0] = utxo; + _mint(utxos); + } + + function withdraw( + uint256 amount, + uint256[2] memory inputs, + uint256 output, + Commonlib.Proof calldata proof + ) public { + _withdraw(amount, inputs, output, proof); + processInputsAndOutputs(inputs, [output, 0]); + } + + function mint(uint256[] memory utxos) public onlyOwner { + _mint(utxos); + } } diff --git a/solidity/contracts/zeto_anon_enc_nullifier.sol b/solidity/contracts/zeto_anon_enc_nullifier.sol index 3f732d4..9b55cdf 100644 --- a/solidity/contracts/zeto_anon_enc_nullifier.sol +++ b/solidity/contracts/zeto_anon_enc_nullifier.sol @@ -15,8 +15,11 @@ // limitations under the License. pragma solidity ^0.8.20; +import {Groth16Verifier_CheckValue} from "./lib/verifier_check_hashes_value.sol"; +import {Groth16Verifier_CheckNullifierValue} from "./lib/verifier_check_nullifier_value.sol"; import {Groth16Verifier_AnonEncNullifier} from "./lib/verifier_anon_enc_nullifier.sol"; import {ZetoNullifier} from "./lib/zeto_nullifier.sol"; +import {ZetoFungibleWithdrawWithNullifiers} from "./lib/zeto_fungible_withdraw_nullifier.sol"; import {Registry} from "./lib/registry.sol"; import {Commonlib} from "./lib/common.sol"; import "hardhat/console.sol"; @@ -30,13 +33,21 @@ import "hardhat/console.sol"; /// - the sender possesses the private BabyJubjub key, whose public key is part of the pre-image of the input commitment hashes, which match the corresponding nullifiers /// - the encrypted value in the input is derived from the receiver's UTXO value and encrypted with a shared secret using the ECDH protocol between the sender and receiver (this guarantees data availability for the receiver) /// - the nullifiers represent input commitments that are included in a Sparse Merkle Tree represented by the root hash -contract Zeto_AnonEncNullifier is ZetoNullifier { +contract Zeto_AnonEncNullifier is + ZetoNullifier, + ZetoFungibleWithdrawWithNullifiers +{ Groth16Verifier_AnonEncNullifier verifier; constructor( + Groth16Verifier_CheckValue _depositVerifier, + Groth16Verifier_CheckNullifierValue _withdrawVerifier, Groth16Verifier_AnonEncNullifier _verifier, Registry _registry - ) ZetoNullifier(_registry) { + ) + ZetoNullifier(_registry) + ZetoFungibleWithdrawWithNullifiers(_depositVerifier, _withdrawVerifier) + { verifier = _verifier; } @@ -63,7 +74,7 @@ contract Zeto_AnonEncNullifier is ZetoNullifier { Commonlib.Proof calldata proof ) public returns (bool) { require( - validateTransactionProposal(nullifiers, outputs, root, proof), + validateTransactionProposal(nullifiers, outputs, root), "Invalid transaction proposal" ); @@ -109,4 +120,30 @@ contract Zeto_AnonEncNullifier is ZetoNullifier { ); return true; } + + function deposit( + uint256 amount, + uint256 utxo, + Commonlib.Proof calldata proof + ) public { + _deposit(amount, utxo, proof); + uint256[] memory utxos = new uint256[](1); + utxos[0] = utxo; + _mint(utxos); + } + + function withdraw( + uint256 amount, + uint256[2] memory nullifiers, + uint256 output, + uint256 root, + Commonlib.Proof calldata proof + ) public { + _withdrawWithNullifiers(amount, nullifiers, output, root, proof); + processInputsAndOutputs(nullifiers, [output, 0]); + } + + function mint(uint256[] memory utxos) public onlyOwner { + _mint(utxos); + } } diff --git a/solidity/contracts/zeto_anon_nullifier.sol b/solidity/contracts/zeto_anon_nullifier.sol index e34290d..d35c40a 100644 --- a/solidity/contracts/zeto_anon_nullifier.sol +++ b/solidity/contracts/zeto_anon_nullifier.sol @@ -15,8 +15,11 @@ // limitations under the License. pragma solidity ^0.8.20; +import {Groth16Verifier_CheckValue} from "./lib/verifier_check_hashes_value.sol"; +import {Groth16Verifier_CheckNullifierValue} from "./lib/verifier_check_nullifier_value.sol"; import {Groth16Verifier_AnonNullifier} from "./lib/verifier_anon_nullifier.sol"; import {ZetoNullifier} from "./lib/zeto_nullifier.sol"; +import {ZetoFungibleWithdrawWithNullifiers} from "./lib/zeto_fungible_withdraw_nullifier.sol"; import {Registry} from "./lib/registry.sol"; import {Commonlib} from "./lib/common.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; @@ -34,13 +37,21 @@ uint256 constant MAX_SMT_DEPTH = 64; /// - the hashes in the input and output match the hash(value, salt, owner public key) formula /// - the sender possesses the private BabyJubjub key, whose public key is part of the pre-image of the input commitment hashes, which match the corresponding nullifiers /// - the nullifiers represent input commitments that are included in a Sparse Merkle Tree represented by the root hash -contract Zeto_AnonNullifier is ZetoNullifier { +contract Zeto_AnonNullifier is + ZetoNullifier, + ZetoFungibleWithdrawWithNullifiers +{ Groth16Verifier_AnonNullifier verifier; constructor( + Groth16Verifier_CheckValue _depositVerifier, + Groth16Verifier_CheckNullifierValue _withdrawVerifier, Groth16Verifier_AnonNullifier _verifier, Registry _registry - ) ZetoNullifier(_registry) { + ) + ZetoNullifier(_registry) + ZetoFungibleWithdrawWithNullifiers(_depositVerifier, _withdrawVerifier) + { verifier = _verifier; } @@ -62,7 +73,7 @@ contract Zeto_AnonNullifier is ZetoNullifier { Commonlib.Proof calldata proof ) public returns (bool) { require( - validateTransactionProposal(nullifiers, outputs, root, proof), + validateTransactionProposal(nullifiers, outputs, root), "Invalid transaction proposal" ); @@ -93,4 +104,30 @@ contract Zeto_AnonNullifier is ZetoNullifier { emit UTXOTransfer(nullifierArray, outputArray, msg.sender); return true; } + + function deposit( + uint256 amount, + uint256 utxo, + Commonlib.Proof calldata proof + ) public { + _deposit(amount, utxo, proof); + uint256[] memory utxos = new uint256[](1); + utxos[0] = utxo; + _mint(utxos); + } + + function withdraw( + uint256 amount, + uint256[2] memory nullifiers, + uint256 output, + uint256 root, + Commonlib.Proof calldata proof + ) public { + _withdrawWithNullifiers(amount, nullifiers, output, root, proof); + processInputsAndOutputs(nullifiers, [output, 0]); + } + + function mint(uint256[] memory utxos) public onlyOwner { + _mint(utxos); + } } diff --git a/solidity/contracts/zeto_nf_anon.sol b/solidity/contracts/zeto_nf_anon.sol index 68da0f5..03aa1cc 100644 --- a/solidity/contracts/zeto_nf_anon.sol +++ b/solidity/contracts/zeto_nf_anon.sol @@ -80,4 +80,8 @@ contract Zeto_NFAnon is ZetoBase { emit UTXOTransfer(inputArray, outputArray, msg.sender); return true; } + + function mint(uint256[] memory utxos) public { + _mint(utxos); + } } diff --git a/solidity/contracts/zeto_nf_anon_nullifier.sol b/solidity/contracts/zeto_nf_anon_nullifier.sol index 21f0c5a..bfb428a 100644 --- a/solidity/contracts/zeto_nf_anon_nullifier.sol +++ b/solidity/contracts/zeto_nf_anon_nullifier.sol @@ -62,12 +62,7 @@ contract Zeto_NFAnonNullifier is ZetoNullifier { Commonlib.Proof calldata proof ) public returns (bool) { require( - validateTransactionProposal( - [nullifier, 0], - [output, 0], - root, - proof - ), + validateTransactionProposal([nullifier, 0], [output, 0], root), "Invalid transaction proposal" ); @@ -93,4 +88,8 @@ contract Zeto_NFAnonNullifier is ZetoNullifier { emit UTXOTransfer(nullifierArray, outputArray, msg.sender); return true; } + + function mint(uint256[] memory utxos) public { + _mint(utxos); + } } diff --git a/solidity/ignition/modules/erc20.ts b/solidity/ignition/modules/erc20.ts new file mode 100644 index 0000000..d5dd300 --- /dev/null +++ b/solidity/ignition/modules/erc20.ts @@ -0,0 +1,22 @@ +// Copyright © 2024 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; + +export default buildModule("SampleERC20", (m) => { + const erc20 = m.contract('SampleERC20', []); + return { erc20 }; +}); diff --git a/solidity/ignition/modules/zeto_anon.ts b/solidity/ignition/modules/zeto_anon.ts index 71c7a02..6337de7 100644 --- a/solidity/ignition/modules/zeto_anon.ts +++ b/solidity/ignition/modules/zeto_anon.ts @@ -16,6 +16,16 @@ import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; +const DepositVerifierModule = buildModule("Groth16Verifier_CheckValue", (m) => { + const verifier = m.contract('Groth16Verifier_CheckValue', []); + return { verifier }; +}); + +const WithdrawVerifierModule = buildModule("Groth16Verifier_CheckInputsOutputsValue", (m) => { + const verifier = m.contract('Groth16Verifier_CheckInputsOutputsValue', []); + return { verifier }; +}); + const VerifierModule = buildModule("Groth16Verifier_Anon", (m) => { const verifier = m.contract('Groth16Verifier_Anon', []); return { verifier }; @@ -23,11 +33,13 @@ const VerifierModule = buildModule("Groth16Verifier_Anon", (m) => { export default buildModule("Zeto_Anon", (m) => { const { verifier } = m.useModule(VerifierModule); + const { verifier: depositVerifier } = m.useModule(DepositVerifierModule); + const { verifier: withdrawVerifier } = m.useModule(WithdrawVerifierModule); const commonlib = m.library('Commonlib'); const registryAddress = m.getParameter("registry"); const registry = m.contractAt('Registry', registryAddress); - const zeto = m.contract('Zeto_Anon', [verifier, registry], { + const zeto = m.contract('Zeto_Anon', [depositVerifier, withdrawVerifier, verifier, registry], { libraries: { Commonlib: commonlib, }, diff --git a/solidity/ignition/modules/zeto_anon_enc.ts b/solidity/ignition/modules/zeto_anon_enc.ts index 304d869..06fdd42 100644 --- a/solidity/ignition/modules/zeto_anon_enc.ts +++ b/solidity/ignition/modules/zeto_anon_enc.ts @@ -16,6 +16,16 @@ import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; +const DepositVerifierModule = buildModule("Groth16Verifier_CheckValue", (m) => { + const verifier = m.contract('Groth16Verifier_CheckValue', []); + return { verifier }; +}); + +const WithdrawVerifierModule = buildModule("Groth16Verifier_CheckInputsOutputsValue", (m) => { + const verifier = m.contract('Groth16Verifier_CheckInputsOutputsValue', []); + return { verifier }; +}); + const VerifierModule = buildModule("Groth16Verifier_AnonEnc", (m) => { const verifier = m.contract('Groth16Verifier_AnonEnc', []); return { verifier }; @@ -23,12 +33,14 @@ const VerifierModule = buildModule("Groth16Verifier_AnonEnc", (m) => { export default buildModule("Zeto_AnonEnc", (m) => { const { verifier } = m.useModule(VerifierModule); + const { verifier: depositVerifier } = m.useModule(DepositVerifierModule); + const { verifier: withdrawVerifier } = m.useModule(WithdrawVerifierModule); const commonlib = m.library('Commonlib'); const registryAddress = m.getParameter("registry"); const registry = m.contractAt('Registry', registryAddress); - const zeto = m.contract('Zeto_AnonEnc', [verifier, registry], { + const zeto = m.contract('Zeto_AnonEnc', [depositVerifier, withdrawVerifier, verifier, registry], { libraries: { Commonlib: commonlib, }, diff --git a/solidity/ignition/modules/zeto_anon_enc_nullifier.ts b/solidity/ignition/modules/zeto_anon_enc_nullifier.ts index 602c729..2b6bfab 100644 --- a/solidity/ignition/modules/zeto_anon_enc_nullifier.ts +++ b/solidity/ignition/modules/zeto_anon_enc_nullifier.ts @@ -30,6 +30,16 @@ const SmtLibModule = buildModule("SmtLib", (m) => { return { smtLib, poseidon3 }; }); +const DepositVerifierModule = buildModule("Groth16Verifier_CheckValue", (m) => { + const verifier = m.contract('Groth16Verifier_CheckValue', []); + return { verifier }; +}); + +const WithdrawVerifierModule = buildModule("Groth16Verifier_CheckNullifierValue", (m) => { + const verifier = m.contract('Groth16Verifier_CheckNullifierValue', []); + return { verifier }; +}); + const VerifierModule = buildModule("Groth16Verifier_AnonEncNullifier", (m) => { const verifier = m.contract('Groth16Verifier_AnonEncNullifier', []); return { verifier }; @@ -38,11 +48,13 @@ const VerifierModule = buildModule("Groth16Verifier_AnonEncNullifier", (m) => { export default buildModule("Zeto_AnonEncNullifier", (m) => { const { smtLib, poseidon3 } = m.useModule(SmtLibModule); const { verifier } = m.useModule(VerifierModule); + const { verifier: depositVerifier } = m.useModule(DepositVerifierModule); + const { verifier: withdrawVerifier } = m.useModule(WithdrawVerifierModule); const commonlib = m.library('Commonlib'); const registryAddress = m.getParameter("registry"); const registry = m.contractAt('Registry', registryAddress); - const zeto = m.contract('Zeto_AnonEncNullifier', [verifier, registry], { + const zeto = m.contract('Zeto_AnonEncNullifier', [depositVerifier, withdrawVerifier, verifier, registry], { libraries: { SmtLib: smtLib, PoseidonUnit3L: poseidon3, diff --git a/solidity/ignition/modules/zeto_anon_nullifier.ts b/solidity/ignition/modules/zeto_anon_nullifier.ts index b0c9523..d9484d3 100644 --- a/solidity/ignition/modules/zeto_anon_nullifier.ts +++ b/solidity/ignition/modules/zeto_anon_nullifier.ts @@ -30,6 +30,16 @@ const SmtLibModule = buildModule("SmtLib", (m) => { return { smtLib, poseidon3 }; }); +const DepositVerifierModule = buildModule("Groth16Verifier_CheckValue", (m) => { + const verifier = m.contract('Groth16Verifier_CheckValue', []); + return { verifier }; +}); + +const WithdrawVerifierModule = buildModule("Groth16Verifier_CheckNullifierValue", (m) => { + const verifier = m.contract('Groth16Verifier_CheckNullifierValue', []); + return { verifier }; +}); + const VerifierModule = buildModule("Groth16Verifier_AnonNullifier", (m) => { const verifier = m.contract('Groth16Verifier_AnonNullifier', []); return { verifier }; @@ -38,11 +48,13 @@ const VerifierModule = buildModule("Groth16Verifier_AnonNullifier", (m) => { export default buildModule("Zeto_AnonNullifier", (m) => { const { smtLib, poseidon3 } = m.useModule(SmtLibModule); const { verifier } = m.useModule(VerifierModule); + const { verifier: depositVerifier } = m.useModule(DepositVerifierModule); + const { verifier: withdrawVerifier } = m.useModule(WithdrawVerifierModule); const commonlib = m.library('Commonlib'); const registryAddress = m.getParameter("registry"); const registry = m.contractAt('Registry', registryAddress); - const zeto = m.contract('Zeto_AnonNullifier', [verifier, registry], { + const zeto = m.contract('Zeto_AnonNullifier', [depositVerifier, withdrawVerifier, verifier, registry], { libraries: { SmtLib: smtLib, PoseidonUnit3L: poseidon3, diff --git a/solidity/test/utils.ts b/solidity/test/utils.ts index 428abbe..b969788 100644 --- a/solidity/test/utils.ts +++ b/solidity/test/utils.ts @@ -16,6 +16,10 @@ import { readFileSync } from "fs"; import * as path from "path"; +import { BigNumberish } from 'ethers'; +import { groth16 } from 'snarkjs'; +import { loadCircuit, encodeProof } from "zeto-js"; +import { User, UTXO } from "./lib/utils"; function provingKeysRoot() { const PROVING_KEYS_ROOT = process.env.PROVING_KEYS_ROOT; @@ -37,3 +41,127 @@ export function loadProvingKeys(type: string) { verificationKey, }; } + +export async function prepareDepositProof(signer: User, output: UTXO) { + const outputCommitments: [BigNumberish] = [output.hash] as [BigNumberish]; + const outputValues = [BigInt(output.value || 0n)]; + const outputOwnerPublicKeys: [[BigNumberish, BigNumberish]] = [signer.babyJubPublicKey] as [[BigNumberish, BigNumberish]]; + + const inputObj = { + outputCommitments, + outputValues, + outputSalts: [output.salt], + outputOwnerPublicKeys + }; + + const circuit = await loadCircuit('check_hashes_value'); + const { provingKeyFile } = loadProvingKeys('check_hashes_value'); + + const startWitnessCalculation = Date.now(); + const witness = await circuit.calculateWTNSBin( + inputObj, + true + ); + const timeWithnessCalculation = Date.now() - startWitnessCalculation; + + const startProofGeneration = Date.now(); + const { proof, publicSignals } = await groth16.prove(provingKeyFile, witness) as { proof: BigNumberish[]; publicSignals: BigNumberish[] }; + const timeProofGeneration = Date.now() - startProofGeneration; + + console.log(`Witness calculation time: ${timeWithnessCalculation}ms. Proof generation time: ${timeProofGeneration}ms.`); + + const encodedProof = encodeProof(proof); + return { + outputCommitments, + encodedProof + }; +} + +export async function prepareNullifierWithdrawProof(signer: User, inputs: UTXO[], _nullifiers: UTXO[], output: UTXO, root: BigInt, merkleProof: BigInt[][]) { + const nullifiers = _nullifiers.map((nullifier) => nullifier.hash) as [BigNumberish, BigNumberish]; + const inputCommitments: [BigNumberish, BigNumberish] = inputs.map((input) => input.hash) as [BigNumberish, BigNumberish]; + const inputValues = inputs.map((input) => BigInt(input.value || 0n)); + const inputSalts = inputs.map((input) => input.salt || 0n); + const outputCommitments: [BigNumberish] = [output.hash] as [BigNumberish]; + const outputValues = [BigInt(output.value || 0n)]; + const outputOwnerPublicKeys: [[BigNumberish, BigNumberish]] = [signer.babyJubPublicKey] as [[BigNumberish, BigNumberish]]; + + const inputObj = { + nullifiers, + inputCommitments, + inputValues, + inputSalts, + inputOwnerPrivateKey: signer.formattedPrivateKey, + root, + enabled: [nullifiers[0] !== 0n ? 1 : 0, nullifiers[1] !== 0n ? 1 : 0], + merkleProof, + outputCommitments, + outputValues, + outputSalts: [output.salt], + outputOwnerPublicKeys + }; + const circuit = await loadCircuit('check_nullifier_value'); + const { provingKeyFile } = loadProvingKeys('check_nullifier_value'); + + const startWitnessCalculation = Date.now(); + const witness = await circuit.calculateWTNSBin( + inputObj, + true + ); + const timeWithnessCalculation = Date.now() - startWitnessCalculation; + + const startProofGeneration = Date.now(); + const { proof, publicSignals } = await groth16.prove(provingKeyFile, witness) as { proof: BigNumberish[]; publicSignals: BigNumberish[] }; + const timeProofGeneration = Date.now() - startProofGeneration; + + console.log(`Witness calculation time: ${timeWithnessCalculation}ms. Proof generation time: ${timeProofGeneration}ms.`); + + const encodedProof = encodeProof(proof); + return { + nullifiers, + outputCommitments, + encodedProof + }; +} + +export async function prepareWithdrawProof(signer: User, inputs: UTXO[], output: UTXO) { + const inputCommitments: [BigNumberish, BigNumberish] = inputs.map((input) => input.hash) as [BigNumberish, BigNumberish]; + const inputValues = inputs.map((input) => BigInt(input.value || 0n)); + const inputSalts = inputs.map((input) => input.salt || 0n); + const outputCommitments: [BigNumberish] = [output.hash] as [BigNumberish]; + const outputValues = [BigInt(output.value || 0n)]; + const outputOwnerPublicKeys: [[BigNumberish, BigNumberish]] = [signer.babyJubPublicKey] as [[BigNumberish, BigNumberish]]; + + const inputObj = { + inputCommitments, + inputValues, + inputSalts, + inputOwnerPrivateKey: signer.formattedPrivateKey, + outputCommitments, + outputValues, + outputSalts: [output.salt], + outputOwnerPublicKeys + }; + const circuit = await loadCircuit('check_inputs_outputs_value'); + const { provingKeyFile } = loadProvingKeys('check_inputs_outputs_value'); + + const startWitnessCalculation = Date.now(); + const witness = await circuit.calculateWTNSBin( + inputObj, + true + ); + const timeWithnessCalculation = Date.now() - startWitnessCalculation; + + const startProofGeneration = Date.now(); + const { proof, publicSignals } = await groth16.prove(provingKeyFile, witness) as { proof: BigNumberish[]; publicSignals: BigNumberish[] }; + const timeProofGeneration = Date.now() - startProofGeneration; + + console.log(`Witness calculation time: ${timeWithnessCalculation}ms. Proof generation time: ${timeProofGeneration}ms.`); + + const encodedProof = encodeProof(proof); + return { + inputCommitments, + outputCommitments, + encodedProof + }; +} diff --git a/solidity/test/zeto_anon.ts b/solidity/test/zeto_anon.ts index 72dc7cd..42fd01e 100644 --- a/solidity/test/zeto_anon.ts +++ b/solidity/test/zeto_anon.ts @@ -20,10 +20,11 @@ import { expect } from 'chai'; import { loadCircuit, encodeProof, Poseidon } from "zeto-js"; import { groth16 } from 'snarkjs'; import { formatPrivKeyForBabyJub, stringifyBigInts } from 'maci-crypto'; -import { User, UTXO, newUser, newUTXO, doMint, parseUTXOEvents } from './lib/utils'; +import { User, UTXO, newUser, newUTXO, doMint, parseUTXOEvents, ZERO_UTXO } from './lib/utils'; import RegistryModule from '../ignition/modules/registry'; import zetoModule from '../ignition/modules/zeto_anon'; -import { loadProvingKeys } from './utils'; +import erc20Module from '../ignition/modules/erc20'; +import { loadProvingKeys, prepareDepositProof, prepareWithdrawProof } from './utils'; const ZERO_PUBKEY = [0, 0]; const poseidonHash = Poseidon.poseidon4; @@ -33,7 +34,9 @@ describe("Zeto based fungible token with anonymity without encryption or nullifi let Alice: User; let Bob: User; let Charlie: User; + let erc20: any; let zeto: any; + let utxo100: UTXO; let utxo1: UTXO; let utxo2: UTXO; let utxo3: UTXO; @@ -57,10 +60,29 @@ describe("Zeto based fungible token with anonymity without encryption or nullifi const tx3 = await registry.connect(deployer).register(Charlie.ethAddress, Charlie.babyJubPublicKey as [BigNumberish, BigNumberish]); await tx3.wait(); + ({ erc20 } = await ignition.deploy(erc20Module)); + const tx4 = await zeto.connect(deployer).setERC20(erc20.target); + await tx4.wait(); + circuit = await loadCircuit('anon'); ({ provingKeyFile: provingKey } = loadProvingKeys('anon')); }); + it("mint ERC20 tokens to Alice to deposit to Zeto should succeed", async function () { + const tx = await erc20.connect(deployer).mint(Alice.ethAddress, 100); + await tx.wait(); + const balance = await erc20.balanceOf(Alice.ethAddress); + expect(balance).to.equal(100); + + const tx1 = await erc20.connect(Alice.signer).approve(zeto.target, 100); + await tx1.wait(); + + utxo100 = newUTXO(100, Alice); + const { outputCommitments, encodedProof } = await prepareDepositProof(Alice, utxo100); + const tx2 = await zeto.connect(Alice.signer).deposit(100, outputCommitments[0], encodedProof); + await tx2.wait(); + }); + it("mint to Alice and transfer UTXOs honestly to Bob should succeed", async function () { // first the authority mints UTXOs to Alice utxo1 = newUTXO(10, Alice); @@ -102,6 +124,21 @@ describe("Zeto based fungible token with anonymity without encryption or nullifi await doBranch(Bob, [utxo3, _utxo1], [_utxo2, utxo7], [Charlie, Bob]); }); + it("Alice withdraws her UTXOs to ERC20 tokens should succeed", async function () { + // Alice proposes the output ERC20 tokens + const outputCommitment = newUTXO(20, Alice); + + const { inputCommitments, outputCommitments, encodedProof } = await prepareWithdrawProof(Alice, [utxo100, ZERO_UTXO], outputCommitment); + + // Alice withdraws her UTXOs to ERC20 tokens + const tx = await zeto.connect(Alice.signer).withdraw(80, inputCommitments, outputCommitments[0], encodedProof); + await tx.wait(); + + // Alice checks her ERC20 balance + const balance = await erc20.balanceOf(Alice.ethAddress); + expect(balance).to.equal(80); + }); + it("mint existing unspent UTXOs should fail", async function () { await expect(doMint(zeto, deployer, [utxo4])).rejectedWith("UTXOAlreadyOwned"); }); diff --git a/solidity/test/zeto_anon_enc.ts b/solidity/test/zeto_anon_enc.ts index b167f1c..d5fb596 100644 --- a/solidity/test/zeto_anon_enc.ts +++ b/solidity/test/zeto_anon_enc.ts @@ -22,8 +22,9 @@ import { groth16 } from 'snarkjs'; import { genRandomSalt, formatPrivKeyForBabyJub, genEcdhSharedKey, stringifyBigInts } from 'maci-crypto'; import RegistryModule from '../ignition/modules/registry'; import zetoModule from '../ignition/modules/zeto_anon_enc'; +import erc20Module from '../ignition/modules/erc20'; import { User, UTXO, newUser, newUTXO, doMint, ZERO_UTXO, parseUTXOEvents } from './lib/utils'; -import { loadProvingKeys } from './utils'; +import { loadProvingKeys, prepareDepositProof, prepareWithdrawProof } from './utils'; const poseidonHash = Poseidon.poseidon4; @@ -32,8 +33,10 @@ describe("Zeto based fungible token with anonymity and encryption", function () let Alice: User; let Bob: User; let Charlie: User; + let erc20: any; let zeto: any; let registry: any; + let utxo100: UTXO; let utxo1: UTXO; let utxo2: UTXO; let utxo3: UTXO; @@ -57,10 +60,29 @@ describe("Zeto based fungible token with anonymity and encryption", function () const tx3 = await registry.connect(deployer).register(Charlie.ethAddress, Charlie.babyJubPublicKey as [BigNumberish, BigNumberish]); await tx3.wait(); + ({ erc20 } = await ignition.deploy(erc20Module)); + const tx4 = await zeto.connect(deployer).setERC20(erc20.target); + await tx4.wait(); + circuit = await loadCircuit('anon_enc'); ({ provingKeyFile: provingKey } = loadProvingKeys('anon_enc')); }); + it("mint ERC20 tokens to Alice to deposit to Zeto should succeed", async function () { + const tx = await erc20.connect(deployer).mint(Alice.ethAddress, 100); + await tx.wait(); + const balance = await erc20.balanceOf(Alice.ethAddress); + expect(balance).to.equal(100); + + const tx1 = await erc20.connect(Alice.signer).approve(zeto.target, 100); + await tx1.wait(); + + utxo100 = newUTXO(100, Alice); + const { outputCommitments, encodedProof } = await prepareDepositProof(Alice, utxo100); + const tx2 = await zeto.connect(Alice.signer).deposit(100, outputCommitments[0], encodedProof); + await tx2.wait(); + }); + it("mint to Alice and transfer UTXOs honestly to Bob should succeed", async function () { // first the authority mints UTXOs to Alice utxo1 = newUTXO(10, Alice); @@ -102,6 +124,21 @@ describe("Zeto based fungible token with anonymity and encryption", function () await doBranch(Bob, [utxo3, ZERO_UTXO], [_utxo1, ZERO_UTXO], [Charlie, Bob]); }); + it("Alice withdraws her UTXOs to ERC20 tokens should succeed", async function () { + // Alice proposes the output ERC20 tokens + const outputCommitment = newUTXO(20, Alice); + + const { inputCommitments, outputCommitments, encodedProof } = await prepareWithdrawProof(Alice, [utxo100, ZERO_UTXO], outputCommitment); + + // Alice withdraws her UTXOs to ERC20 tokens + const tx = await zeto.connect(Alice.signer).withdraw(80, inputCommitments, outputCommitments[0], encodedProof); + await tx.wait(); + + // Alice checks her ERC20 balance + const balance = await erc20.balanceOf(Alice.ethAddress); + expect(balance).to.equal(80); + }); + it("mint existing unspent UTXOs should fail", async function () { await expect(doMint(zeto, deployer, [utxo4])).rejectedWith("UTXOAlreadyOwned"); }); diff --git a/solidity/test/zeto_anon_enc_nullifier.ts b/solidity/test/zeto_anon_enc_nullifier.ts index 469236a..b378c84 100644 --- a/solidity/test/zeto_anon_enc_nullifier.ts +++ b/solidity/test/zeto_anon_enc_nullifier.ts @@ -20,18 +20,21 @@ import { expect } from 'chai'; import { loadCircuit, poseidonDecrypt, encodeProof } from "zeto-js"; import { groth16 } from 'snarkjs'; import { genRandomSalt, genEcdhSharedKey, stringifyBigInts } from 'maci-crypto'; -import { Merkletree, InMemoryDB, str2Bytes } from '@iden3/js-merkletree'; +import { Merkletree, InMemoryDB, str2Bytes, ZERO_HASH } from '@iden3/js-merkletree'; import RegistryModule from '../ignition/modules/registry'; import zetoModule from '../ignition/modules/zeto_anon_enc_nullifier'; +import erc20Module from '../ignition/modules/erc20'; import { UTXO, User, newUser, newUTXO, newNullifier, doMint, ZERO_UTXO, parseUTXOEvents } from './lib/utils'; -import { loadProvingKeys } from './utils'; +import { loadProvingKeys, prepareDepositProof, prepareNullifierWithdrawProof } from './utils'; describe("Zeto based fungible token with anonymity using nullifiers and encryption", function () { let deployer: Signer; let Alice: User; let Bob: User; let Charlie: User; + let erc20: any; let zeto: any; + let utxo100: UTXO; let utxo1: UTXO; let utxo2: UTXO; let utxo3: UTXO; @@ -57,6 +60,10 @@ describe("Zeto based fungible token with anonymity using nullifiers and encrypti const tx3 = await registry.connect(deployer).register(Charlie.ethAddress, Charlie.babyJubPublicKey as [BigNumberish, BigNumberish]); await tx3.wait(); + ({ erc20 } = await ignition.deploy(erc20Module)); + const tx4 = await zeto.connect(deployer).setERC20(erc20.target); + await tx4.wait(); + circuit = await loadCircuit('anon_enc_nullifier'); ({ provingKeyFile: provingKey } = loadProvingKeys('anon_enc_nullifier')); @@ -74,6 +81,24 @@ describe("Zeto based fungible token with anonymity using nullifiers and encrypti expect(root.string()).to.equal(onchainRoot.toString()); }); + it("mint ERC20 tokens to Alice to deposit to Zeto should succeed", async function () { + const tx = await erc20.connect(deployer).mint(Alice.ethAddress, 100); + await tx.wait(); + const balance = await erc20.balanceOf(Alice.ethAddress); + expect(balance).to.equal(100); + + const tx1 = await erc20.connect(Alice.signer).approve(zeto.target, 100); + await tx1.wait(); + + utxo100 = newUTXO(100, Alice); + const { outputCommitments, encodedProof } = await prepareDepositProof(Alice, utxo100); + const tx2 = await zeto.connect(Alice.signer).deposit(100, outputCommitments[0], encodedProof); + await tx2.wait(); + + await smtAlice.add(utxo100.hash, utxo100.hash); + await smtBob.add(utxo100.hash, utxo100.hash); + }); + it("mint to Alice and transfer UTXOs honestly to Bob should succeed", async function () { // The authority mints a new UTXO and assigns it to Alice utxo1 = newUTXO(10, Alice); @@ -162,6 +187,30 @@ describe("Zeto based fungible token with anonymity using nullifiers and encrypti await smtAlice.add(events[0].outputs[1], events[0].outputs[1]); }).timeout(600000); + it("Alice withdraws her UTXOs to ERC20 tokens should succeed", async function () { + // Alice generates the nullifiers for the UTXOs to be spent + const nullifier1 = newNullifier(utxo100, Alice); + + // Alice generates inclusion proofs for the UTXOs to be spent + let root = await smtAlice.root(); + const proof1 = await smtAlice.generateCircomVerifierProof(utxo100.hash, root); + const proof2 = await smtAlice.generateCircomVerifierProof(0n, root); + const merkleProofs = [proof1.siblings.map((s) => s.bigInt()), proof2.siblings.map((s) => s.bigInt())]; + + // Alice proposes the output ERC20 tokens + const outputCommitment = newUTXO(20, Alice); + + const { nullifiers, outputCommitments, encodedProof } = await prepareNullifierWithdrawProof(Alice, [utxo100, ZERO_UTXO], [nullifier1, ZERO_UTXO], outputCommitment, root.bigInt(), merkleProofs); + + // Alice withdraws her UTXOs to ERC20 tokens + const tx = await zeto.connect(Alice.signer).withdraw(80, nullifiers, outputCommitments[0], root.bigInt(), encodedProof); + await tx.wait(); + + // Alice checks her ERC20 balance + const balance = await erc20.balanceOf(Alice.ethAddress); + expect(balance).to.equal(80); + }); + it("mint existing unspent UTXOs should fail", async function () { await expect(doMint(zeto, deployer, [utxo4])).rejectedWith("UTXOAlreadyOwned"); }); diff --git a/solidity/test/zeto_anon_nullifier.ts b/solidity/test/zeto_anon_nullifier.ts index 67dd38f..930d363 100644 --- a/solidity/test/zeto_anon_nullifier.ts +++ b/solidity/test/zeto_anon_nullifier.ts @@ -22,15 +22,18 @@ import { groth16 } from 'snarkjs'; import { Merkletree, InMemoryDB, str2Bytes } from '@iden3/js-merkletree'; import RegistryModule from '../ignition/modules/registry'; import zetoModule from '../ignition/modules/zeto_anon_nullifier'; +import erc20Module from '../ignition/modules/erc20'; import { UTXO, User, newUser, newUTXO, newNullifier, doMint, ZERO_UTXO, parseUTXOEvents } from './lib/utils'; -import { loadProvingKeys } from './utils'; +import { loadProvingKeys, prepareDepositProof, prepareNullifierWithdrawProof } from './utils'; describe("Zeto based fungible token with anonymity using nullifiers without encryption", function () { let deployer: Signer; let Alice: User; let Bob: User; let Charlie: User; + let erc20: any; let zeto: any; + let utxo100: UTXO; let utxo1: UTXO; let utxo2: UTXO; let utxo3: UTXO; @@ -56,6 +59,10 @@ describe("Zeto based fungible token with anonymity using nullifiers without encr const tx3 = await registry.connect(deployer).register(Charlie.ethAddress, Charlie.babyJubPublicKey as [BigNumberish, BigNumberish]); await tx3.wait(); + ({ erc20 } = await ignition.deploy(erc20Module)); + const tx4 = await zeto.connect(deployer).setERC20(erc20.target); + await tx4.wait(); + circuit = await loadCircuit('anon_nullifier'); ({ provingKeyFile: provingKey } = loadProvingKeys('anon_nullifier')); @@ -73,6 +80,24 @@ describe("Zeto based fungible token with anonymity using nullifiers without encr expect(root.string()).to.equal(onchainRoot.toString()); }); + it("mint ERC20 tokens to Alice to deposit to Zeto should succeed", async function () { + const tx = await erc20.connect(deployer).mint(Alice.ethAddress, 100); + await tx.wait(); + const balance = await erc20.balanceOf(Alice.ethAddress); + expect(balance).to.equal(100); + + const tx1 = await erc20.connect(Alice.signer).approve(zeto.target, 100); + await tx1.wait(); + + utxo100 = newUTXO(100, Alice); + const { outputCommitments, encodedProof } = await prepareDepositProof(Alice, utxo100); + const tx2 = await zeto.connect(Alice.signer).deposit(100, outputCommitments[0], encodedProof); + await tx2.wait(); + + await smtAlice.add(utxo100.hash, utxo100.hash); + await smtBob.add(utxo100.hash, utxo100.hash); + }); + it("mint to Alice and transfer UTXOs honestly to Bob should succeed", async function () { // The authority mints a new UTXO and assigns it to Alice utxo1 = newUTXO(10, Alice); @@ -163,6 +188,30 @@ describe("Zeto based fungible token with anonymity using nullifiers without encr await smtAlice.add(events[0].outputs[1], events[0].outputs[1]); }).timeout(600000); + it("Alice withdraws her UTXOs to ERC20 tokens should succeed", async function () { + // Alice generates the nullifiers for the UTXOs to be spent + const nullifier1 = newNullifier(utxo100, Alice); + + // Alice generates inclusion proofs for the UTXOs to be spent + let root = await smtAlice.root(); + const proof1 = await smtAlice.generateCircomVerifierProof(utxo100.hash, root); + const proof2 = await smtAlice.generateCircomVerifierProof(0n, root); + const merkleProofs = [proof1.siblings.map((s) => s.bigInt()), proof2.siblings.map((s) => s.bigInt())]; + + // Alice proposes the output ERC20 tokens + const outputCommitment = newUTXO(20, Alice); + + const { nullifiers, outputCommitments, encodedProof } = await prepareNullifierWithdrawProof(Alice, [utxo100, ZERO_UTXO], [nullifier1, ZERO_UTXO], outputCommitment, root.bigInt(), merkleProofs); + + // Alice withdraws her UTXOs to ERC20 tokens + const tx = await zeto.connect(Alice.signer).withdraw(80, nullifiers, outputCommitments[0], root.bigInt(), encodedProof); + await tx.wait(); + + // Alice checks her ERC20 balance + const balance = await erc20.balanceOf(Alice.ethAddress); + expect(balance).to.equal(80); + }); + it("mint existing unspent UTXOs should fail", async function () { await expect(doMint(zeto, deployer, [utxo4])).rejectedWith("UTXOAlreadyOwned"); }); diff --git a/zkp/circuits/check_hashes_value.circom b/zkp/circuits/check_hashes_value.circom new file mode 100644 index 0000000..69b0a2e --- /dev/null +++ b/zkp/circuits/check_hashes_value.circom @@ -0,0 +1,20 @@ +// Copyright © 2024 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +pragma circom 2.1.4; + +include "./lib/check-hashes-value.circom"; + +component main {public [ outputCommitments ]} = CheckHashesValue(1); \ No newline at end of file diff --git a/zkp/circuits/check_inputs_outputs_value.circom b/zkp/circuits/check_inputs_outputs_value.circom new file mode 100644 index 0000000..c072b37 --- /dev/null +++ b/zkp/circuits/check_inputs_outputs_value.circom @@ -0,0 +1,20 @@ +// Copyright © 2024 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +pragma circom 2.1.4; + +include "./lib/check-inputs-outputs-value.circom"; + +component main { public [ inputCommitments, outputCommitments ] } = CheckInputsOutputsValue(2, 1); \ No newline at end of file diff --git a/zkp/circuits/check_nullifier_value.circom b/zkp/circuits/check_nullifier_value.circom new file mode 100644 index 0000000..fcec3df --- /dev/null +++ b/zkp/circuits/check_nullifier_value.circom @@ -0,0 +1,20 @@ +// Copyright © 2024 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +pragma circom 2.1.4; + +include "./lib/check-nullifier-value.circom"; + +component main { public [ nullifiers, outputCommitments, root, enabled ] } = CheckNullifierValue(2, 1, 64); \ No newline at end of file diff --git a/zkp/circuits/lib/check-hashes-value.circom b/zkp/circuits/lib/check-hashes-value.circom new file mode 100644 index 0000000..4b7c9b3 --- /dev/null +++ b/zkp/circuits/lib/check-hashes-value.circom @@ -0,0 +1,76 @@ +// Copyright © 2024 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +pragma circom 2.1.4; + +include "../node_modules/circomlib/circuits/poseidon.circom"; +include "../node_modules/circomlib/circuits/comparators.circom"; + +// CheckHashesValue is a circuit that checks the integrity of transactions of Fungible Tokens +// - check that all output values are positive numbers (within the range of 0 to 2^40) +// - check that the output commitments are the hash of the output values +// - check that the sum of output values equals a total value in the output +// +// output commitments: array of hashes for the output utxos +// outputValues: array of values, as preimages for the output hashes, for the output utxos +// +// commitment = hash(value, salt, ownerAddress) +// +template CheckHashesValue(numOutputs) { + signal input outputCommitments[numOutputs]; + signal input outputValues[numOutputs]; + signal input outputSalts[numOutputs]; + signal input outputOwnerPublicKeys[numOutputs][2]; + signal output out; + + // check that the output values are within the expected range. we don't allow negative values + component positive[numOutputs]; + var isPositive[numOutputs]; + for (var i = 0; i < numOutputs; i++) { + positive[i] = GreaterEqThan(40); + positive[i].in[0] <== outputValues[i]; + positive[i].in[1] <== 0; + isPositive[i] = positive[i].out; + assert(isPositive[i] == 1); + } + + // hash the output values + component outputHashes[numOutputs]; + var calculatedOutputHashes[numOutputs]; + for (var i = 0; i < numOutputs; i++) { + outputHashes[i] = Poseidon(4); + outputHashes[i].inputs[0] <== outputValues[i]; + outputHashes[i].inputs[1] <== outputSalts[i]; + outputHashes[i].inputs[2] <== outputOwnerPublicKeys[i][0]; + outputHashes[i].inputs[3] <== outputOwnerPublicKeys[i][1]; + if (outputCommitments[i] == 0) { + calculatedOutputHashes[i] = 0; + } else { + calculatedOutputHashes[i] = outputHashes[i].out; + } + } + + // check that the output commitments match the calculated hashes + for (var i = 0; i < numOutputs; i++) { + assert(outputCommitments[i] == calculatedOutputHashes[i]); + } + + // calculate the sum of output values and set to the output + var sumOutputs = 0; + for (var i = 0; i < numOutputs; i++) { + sumOutputs = sumOutputs + outputValues[i]; + } + out <== sumOutputs; +} diff --git a/zkp/circuits/lib/check-inputs-outputs-value.circom b/zkp/circuits/lib/check-inputs-outputs-value.circom new file mode 100644 index 0000000..0a980ba --- /dev/null +++ b/zkp/circuits/lib/check-inputs-outputs-value.circom @@ -0,0 +1,129 @@ +// Copyright © 2024 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +pragma circom 2.1.4; + +include "../node_modules/circomlib/circuits/poseidon.circom"; +include "../node_modules/circomlib/circuits/comparators.circom"; +include "../node_modules/circomlib/circuits/babyjub.circom"; +include "../node_modules/circomlib/circuits/smt/smtverifier.circom"; + +// CheckInputsOutputsValue is a circuit that checks the integrity of transactions of Fungible Tokens +// - check that all output values are positive numbers (within the range of 0 to 2^40) +// - check that the input commitments are correctly computed from the input values, salts, and owner public keys +// - check that the output commitments are the hash of the output values +// - check that the sum of input values equals the output values plus a total value in the circuit output +// +// input commitments: array of hashes for the input utxos +// inputValues: array of values, as preimages for the input hashes, for the input utxos +// output commitments: array of hashes for the output utxos +// outputValues: array of values, as preimages for the output hashes, for the output utxos +// +// commitment = hash(value, salt, ownerPublicKey1, ownerPublicKey2) +// +template CheckInputsOutputsValue(numInputs, numOutputs) { + signal input inputCommitments[numInputs]; + signal input inputValues[numInputs]; + signal input inputSalts[numInputs]; + // must be properly hashed and trimmed to be compatible with the BabyJub curve. + // Reference: https://github.com/iden3/circomlib/blob/master/test/babyjub.js#L103 + signal input inputOwnerPrivateKey; + signal input outputCommitments[numOutputs]; + signal input outputValues[numOutputs]; + signal input outputSalts[numOutputs]; + signal input outputOwnerPublicKeys[numOutputs][2]; + signal output out; + + // check that the output values are within the expected range. we don't allow negative values + component positive[numOutputs]; + var isPositive[numOutputs]; + for (var i = 0; i < numOutputs; i++) { + positive[i] = GreaterEqThan(40); + positive[i].in[0] <== outputValues[i]; + positive[i].in[1] <== 0; + isPositive[i] = positive[i].out; + assert(isPositive[i] == 1); + } + + // derive the sender's public key from the secret input + // for the sender's private key. This step demonstrates + // the sender really owns the private key for the input + // UTXOs + var inputOwnerPublicKey[2]; + component pub = BabyPbk(); + pub.in <== inputOwnerPrivateKey; + inputOwnerPublicKey[0] = pub.Ax; + inputOwnerPublicKey[1] = pub.Ay; + + // hash the input values + component inputHashes[numInputs]; + var calculatedInputHashes[numInputs]; + for (var i = 0; i < numInputs; i++) { + // perform the hash calculation even though they are not needed when the input + // commitment at the current index is 0; this is because in zkp circuits we + // must always perform the same computation (have the the same constraints) + inputHashes[i] = Poseidon(4); + inputHashes[i].inputs[0] <== inputValues[i]; + inputHashes[i].inputs[1] <== inputSalts[i]; + inputHashes[i].inputs[2] <== inputOwnerPublicKey[0]; + inputHashes[i].inputs[3] <== inputOwnerPublicKey[1]; + if (inputCommitments[i] == 0) { + calculatedInputHashes[i] = 0; + } else { + calculatedInputHashes[i] = inputHashes[i].out; + } + } + + // check that the input commitments match the calculated hashes + for (var i = 0; i < numInputs; i++) { + assert(inputCommitments[i] == calculatedInputHashes[i]); + } + + // hash the output values + component outputHashes[numOutputs]; + var calculatedOutputHashes[numOutputs]; + for (var i = 0; i < numOutputs; i++) { + outputHashes[i] = Poseidon(4); + outputHashes[i].inputs[0] <== outputValues[i]; + outputHashes[i].inputs[1] <== outputSalts[i]; + outputHashes[i].inputs[2] <== outputOwnerPublicKeys[i][0]; + outputHashes[i].inputs[3] <== outputOwnerPublicKeys[i][1]; + if (outputCommitments[i] == 0) { + calculatedOutputHashes[i] = 0; + } else { + calculatedOutputHashes[i] = outputHashes[i].out; + } + } + + // check that the output commitments match the calculated hashes + for (var i = 0; i < numOutputs; i++) { + assert(outputCommitments[i] == calculatedOutputHashes[i]); + } + + // check that the sum of input values equals the sum of output values + var sumInputs = 0; + for (var i = 0; i < numInputs; i++) { + sumInputs = sumInputs + inputValues[i]; + } + var sumOutputs = 0; + for (var i = 0; i < numOutputs; i++) { + sumOutputs = sumOutputs + outputValues[i]; + } + + // check that the sum of input values is greater than the sum of output values + assert(sumInputs >= sumOutputs); + + out <== sumInputs - sumOutputs; +} diff --git a/zkp/circuits/lib/check-nullifier-value.circom b/zkp/circuits/lib/check-nullifier-value.circom new file mode 100644 index 0000000..f6e8faf --- /dev/null +++ b/zkp/circuits/lib/check-nullifier-value.circom @@ -0,0 +1,176 @@ +// Copyright © 2024 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +pragma circom 2.1.4; + +include "../node_modules/circomlib/circuits/poseidon.circom"; +include "../node_modules/circomlib/circuits/comparators.circom"; +include "../node_modules/circomlib/circuits/babyjub.circom"; +include "../node_modules/circomlib/circuits/smt/smtverifier.circom"; + +// CheckNullifierValue is a circuit that checks the integrity of transactions of Fungible Tokens +// - check that all output values are positive numbers (within the range of 0 to 2^40) +// - check that the nullifiers are correctly computed from the input values and salts +// - check that the input commitments are correctly computed from the input values, salts, and owner public keys +// - check that the input commitments are included in the Sparse Merkle Tree with the root `root` +// - check that the output commitments are the hash of the output values +// - check that the sum of input values equals the output values plus a total value in the output +// +// nullifiers: array of hashes for the nullifiers corresponding to the input utxos +// inputValues: array of values, as preimages for the input hashes, for the input utxos +// output commitments: array of hashes for the output utxos +// outputValues: array of values, as preimages for the output hashes, for the output utxos +// +// commitment = hash(value, salt, ownerPublicKey1, ownerPublicKey2) +// nullifier = hash(value, salt, ownerPrivatekey) +// +template CheckNullifierValue(numInputs, numOutputs, nSMTLevels) { + signal input nullifiers[numInputs]; + signal input inputCommitments[numInputs]; + signal input inputValues[numInputs]; + signal input inputSalts[numInputs]; + // must be properly hashed and trimmed to be compatible with the BabyJub curve. + // Reference: https://github.com/iden3/circomlib/blob/master/test/babyjub.js#L103 + signal input inputOwnerPrivateKey; + signal input root; + signal input merkleProof[numInputs][nSMTLevels]; + signal input enabled[numInputs]; + signal input outputCommitments[numOutputs]; + signal input outputValues[numOutputs]; + signal input outputSalts[numOutputs]; + signal input outputOwnerPublicKeys[numOutputs][2]; + signal output out; + + // check that the output values are within the expected range. we don't allow negative values + component positive[numOutputs]; + var isPositive[numOutputs]; + for (var i = 0; i < numOutputs; i++) { + positive[i] = GreaterEqThan(40); + positive[i].in[0] <== outputValues[i]; + positive[i].in[1] <== 0; + isPositive[i] = positive[i].out; + assert(isPositive[i] == 1); + } + + // derive the sender's public key from the secret input + // for the sender's private key. This step demonstrates + // the sender really owns the private key for the input + // UTXOs + var inputOwnerPublicKey[2]; + component pub = BabyPbk(); + pub.in <== inputOwnerPrivateKey; + inputOwnerPublicKey[0] = pub.Ax; + inputOwnerPublicKey[1] = pub.Ay; + + // hash the input values + component inputHashes[numInputs]; + var calculatedInputHashes[numInputs]; + for (var i = 0; i < numInputs; i++) { + // perform the hash calculation even though they are not needed when the input + // commitment at the current index is 0; this is because in zkp circuits we + // must always perform the same computation (have the the same constraints) + inputHashes[i] = Poseidon(4); + inputHashes[i].inputs[0] <== inputValues[i]; + inputHashes[i].inputs[1] <== inputSalts[i]; + inputHashes[i].inputs[2] <== inputOwnerPublicKey[0]; + inputHashes[i].inputs[3] <== inputOwnerPublicKey[1]; + if (inputCommitments[i] == 0) { + calculatedInputHashes[i] = 0; + } else { + calculatedInputHashes[i] = inputHashes[i].out; + } + } + + // check that the input commitments match the calculated hashes + for (var i = 0; i < numInputs; i++) { + assert(inputCommitments[i] == calculatedInputHashes[i]); + } + + // calculate the nullifier values from the input values + component nullifierHashes[numInputs]; + var calculatedNullifierHashes[numInputs]; + for (var i = 0; i < numInputs; i++) { + nullifierHashes[i] = Poseidon(3); + nullifierHashes[i].inputs[0] <== inputValues[i]; + nullifierHashes[i].inputs[1] <== inputSalts[i]; + nullifierHashes[i].inputs[2] <== inputOwnerPrivateKey; + if (nullifiers[i] == 0) { + calculatedNullifierHashes[i] = 0; + } else { + calculatedNullifierHashes[i] = nullifierHashes[i].out; + } + } + + // check that the nullifiers match the calculated hashes + for (var i = 0; i < numInputs; i++) { + assert(nullifiers[i] == calculatedNullifierHashes[i]); + } + + // With the above steps, we demonstrated that the nullifiers + // are securely bound to the input commitments. Now we need to + // demonstrate that the input commitments belong to the Sparse + // Merkle Tree with the root `root`. + component smtVerifier[numInputs]; + for (var i = 0; i < numInputs; i++) { + smtVerifier[i] = SMTVerifier(nSMTLevels); + smtVerifier[i].enabled <== enabled[i]; + smtVerifier[i].root <== root; + for (var j = 0; j < nSMTLevels; j++) { + smtVerifier[i].siblings[j] <== merkleProof[i][j]; + } + smtVerifier[i].oldKey <== 0; + smtVerifier[i].oldValue <== 0; + smtVerifier[i].isOld0 <== 0; + smtVerifier[i].key <== inputCommitments[i]; + smtVerifier[i].value <== inputCommitments[i]; + smtVerifier[i].fnc <== 0; + } + + // hash the output values + component outputHashes[numOutputs]; + var calculatedOutputHashes[numOutputs]; + for (var i = 0; i < numOutputs; i++) { + outputHashes[i] = Poseidon(4); + outputHashes[i].inputs[0] <== outputValues[i]; + outputHashes[i].inputs[1] <== outputSalts[i]; + outputHashes[i].inputs[2] <== outputOwnerPublicKeys[i][0]; + outputHashes[i].inputs[3] <== outputOwnerPublicKeys[i][1]; + if (outputCommitments[i] == 0) { + calculatedOutputHashes[i] = 0; + } else { + calculatedOutputHashes[i] = outputHashes[i].out; + } + } + + // check that the output commitments match the calculated hashes + for (var i = 0; i < numOutputs; i++) { + assert(outputCommitments[i] == calculatedOutputHashes[i]); + } + + // check that the sum of input values equals the sum of output values + var sumInputs = 0; + for (var i = 0; i < numInputs; i++) { + sumInputs = sumInputs + inputValues[i]; + } + var sumOutputs = 0; + for (var i = 0; i < numOutputs; i++) { + sumOutputs = sumOutputs + outputValues[i]; + } + + // check that the sum of input values is greater than the sum of output values + assert(sumInputs >= sumOutputs); + + out <== sumInputs - sumOutputs; +} diff --git a/zkp/js/README.md b/zkp/js/README.md index 2b7d0f3..bdc2e84 100644 --- a/zkp/js/README.md +++ b/zkp/js/README.md @@ -43,14 +43,18 @@ The different `ptau` files represent different levels of complexity with the cir The steps below use `X` for the name of the circuit, and `Y` for the sequence number of the ptau files: -| X | Y | -| --------------------------- | --------------------------------- | -| `anon.circom` | `powersOfTau28_hez_final_12.ptau` | -| `anon_enc.circom` | `powersOfTau28_hez_final_13.ptau` | -| `anon_nullifier.circom` | `powersOfTau28_hez_final_16.ptau` | -| `anon_enc_nullifier.circom` | `powersOfTau28_hez_final_16.ptau` | -| `nf_anon.circom` | `powersOfTau28_hez_final_11.ptau` | -| `nf_anon_nullifier.circom` | `powersOfTau28_hez_final_15.ptau` | +| X | Y | +| ---------------------------- | --------------------------------- | +| `anon.circom` | `powersOfTau28_hez_final_12.ptau` | +| `anon_enc.circom` | `powersOfTau28_hez_final_13.ptau` | +| `anon_nullifier.circom` | `powersOfTau28_hez_final_16.ptau` | +| `anon_enc_nullifier.circom` | `powersOfTau28_hez_final_16.ptau` | +| `nf_anon.circom` | `powersOfTau28_hez_final_11.ptau` | +| `nf_anon_nullifier.circom` | `powersOfTau28_hez_final_15.ptau` | +| `check_hashes_value.circom` | `powersOfTau28_hez_final_09.ptau` | +| `check_inputs_outputs_value` | `powersOfTau28_hez_final_11.ptau` | +| `check_nullifier_value` | `powersOfTau28_hez_final_16.ptau` | +| `check_nullifiers.circom` | `powersOfTau28_hez_final_11.ptau` | ### Generating the R1CS circuit format diff --git a/zkp/js/lib/anon_nullifier_js/anon_nullifier.wasm b/zkp/js/lib/anon_nullifier_js/anon_nullifier.wasm index 341ede37d7558c2a229c814506bc5d5a1a34261a..ef56df3f2bdf49256805cea658754feeaa66a9f9 100644 GIT binary patch delta 712 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∈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