Skip to content

Releases: semaphore-protocol/semaphore

v3.9.0

28 Apr 11:47
Compare
Choose a tag to compare

   🚀 Features

    View changes on GitHub

v3.8.0

26 Apr 14:37
Compare
Choose a tag to compare

   🚀 Features

   ♻️ Refactoring

    View changes on GitHub

v3.7.0

20 Apr 10:33
Compare
Choose a tag to compare

No significant changes

    View changes on GitHub

v3.6.0

11 Apr 18:02
Compare
Choose a tag to compare

📣 Important news

CLI

CLI templates

There are two new templates in the CLI: monorepo-ethers and monorepo-subgraph. You can select which one you prefer when creating your project:

Supported templates:

CLI commands

The get-group command in the CLI was split into get-group, get-members and get-proofs.

Commands:

  • get-group: It returns the data of a group from a supported network.
  • get-members: It returns the members of a group from a supported network.
  • get-proofs: It returns the proofs of a group from a supported network.

PR: #303

Contracts

All contracts are using the same addresses on almost all the supported networks. You can take a look at the new contract addresses in the documentation.

PR: #304

Discord Bot

Semaphore has a new Discord bot that can be used to show the data of on-chain groups with a simple command: /get-group . The output of the command is private by default, but you can make it public by adding a third parameter /get-group true. Exciting new features will be integrated in the future, stay tuned!

Repository: https://github.com/semaphore-protocol/discord-bot


   🚀 Features

   🐞 Bug Fixes

   🏎 Performance

   ♻️ Refactoring

    View changes on GitHub

v3.5.0

31 Mar 12:17
Compare
Choose a tag to compare

   🚀 Features

   🐞 Bug Fixes

    View changes on GitHub

v3.4.0

21 Mar 19:43
Compare
Choose a tag to compare

📣 Important news

HeyAuthn

HeyAuthn (@semaphore-protocol/heyauthn) is a new library to allow developers to create and manage Semaphore identities using WebAuthn as a cross-device biometric authentication in a way that is more convenient, smoother and secure than localStorage, Chrome extensions, or password manager based solutions.

PR: #285
Special thanks to @vb7401, @rrrliu, @emmaguo13, @sehyunc and @enricobottazzi!

Arbitrum Goerli

Semaphore is now available on Arbitrum Goerli. Please, check the contract addresses in our documentation, or the subgraph endpoint here.

PR: #282

CLI

The Semaphore CLI also supports Sepolia and Arbitrum Goerli now. The commands try to use the Semaphore subgraphs when available, otherwise they use SemaphoreEthers. The template has been updated in accordance with the Semaphore boilerplate.

PRs: #281, #283

OpenZeppelin relay

The Semaphore boilerplate integrated a new relay (no need to deploy backend code anymore!). Relays are a key component in zero-knowledge applications. In order to preserve the user's anonymity, applications need a relay to post the proof transaction to Ethereum (where all transactions are public) on behalf of the user. OpenZeppelin Defender has been used to:

  1. Create a OZ Relay for Arbitrum Goerli to send transactions via a regular HTTP API, which takes care of private key secure storage, transaction signing, nonce management, gas pricing estimation, and resubmissions.
  2. Create a OZ Autotask to run a code snippet via webhooks and trigger the OZ Relay:
const { DefenderRelayProvider, DefenderRelaySigner } = require('defender-relay-client/lib/ethers');
const { ethers } = require('ethers');

exports.handler = async function(event) {
    const { body } = event.request;
  
	console.info(body)

	if (!body || !body.abi || !body.address || !body.functionName || !body.functionParameters) {
    	throw Error("The request body was not formatted correctly")
    }
  
  	const { abi, address, functionName,  functionParameters } = body

    const provider = new DefenderRelayProvider(event);
    const signer = new DefenderRelaySigner(event, provider, { speed: 'fast' });

    const contract = new ethers.Contract(address, abi, signer);

    const tx = await contract[functionName](...functionParameters);

    return tx.wait();
}

This code can be used for any contract and function, but you are free to customize it or set a whitelist in your relay.

PR: semaphore-protocol/boilerplate#36


   🚀 Features

   🐞 Bug Fixes

   ♻️ Refactoring

    View changes on GitHub

v3.2.3

13 Mar 22:55
Compare
Choose a tag to compare

No significant changes

    View changes on GitHub

v3.2.2

13 Mar 11:54
Compare
Choose a tag to compare

   🐞 Bug Fixes

    View changes on GitHub

v3.2.1

11 Mar 21:45
Compare
Choose a tag to compare

No significant changes

    View changes on GitHub

v3.2.0

10 Mar 11:29
Compare
Choose a tag to compare

📣 Important news

Testnet networks

We are excited to announce that Semaphore is now available in the following testnet networks: Sepolia, Mumbai and Optimism Goerli. Please, check the contract addresses in our documentation. We will work to deploy the contracts on the mainnets as soon as possible!

New Semaphore package

⚠️ @semaphore-protocol/subgraph package has been replaced by @semaphore-protocol/data, which contains the former subgraph class (now SemaphoreSubgraph) and a new class (SemaphoreEthers). SemaphoreEthers supports all Ethers providers and networks and thus provides devs with a more flexible and simple solution to directly fetch on-chain data, potentially more convenient in the early stages of development.

Please, check out its README file for more information.

PR: #264
Special thanks to @vplasencia for the idea!

New subgraph endpoints

Semaphore discontinued TheGraph Hosting Service and is using TheGraph Studio now. You can find the new endpoints in our subgraph repository. New endpoints for Mumbai and Optimism Goerli are also available!

More security

⚠️ The hash function for generating Semaphore identities from secret messages has been updated to add an additional layer of security. Thus, the secret values of identities generated from v3.2.0 will be different from previous versions. The Semaphore core libraries (identity, group, proof) will not have any breaking changes in the future unless there are major bugs.

PR: #262
Special thanks to @vimwitch!

More efforts on packages' size

We know that package size is a key issue in adoption, especially in countries where connectivity is still slow. @semaphore-protocol/identity package's size has been drastically reduced, decreasing from 1.2 MB to 114.6 kB. Check out the progress on Bundlephobia!

PR: #271
Special thanks to @vimwitch!

Semaphore benchmarks

Semaphore has a new repository to collect benchmarks. Currently there is a simple web page that can be used to test the speed of generating a Semaphore proof in your devices. Try generating a Semaphore proof yourself on https://benchmarks.semaphore.appliedzkp.org!


   🚀 Features

   ♻️ Refactoring

    View changes on GitHub