Echooo is a messaging protocol that uses cryptography which allows users to communicate privately and safely. Echooo prevents users with compromised private keys from hackers to access their full history messages by creating a communication address that's renewed in the user’s preferred frequency. This communication address functions as a safe and temporarily encrypted channel that is owned only by the users involved. Echooo also utilizes Elliptic-curve Diffie–Hellman to create a shared identity for each two users and anonymize the receiver of the messages on chain.
Echooo was a project created at ETH NYC and won a top 10 placing in the Polygon sponsor prize: https://ethglobal.com/showcase/echooo-messaging-protocol-h7oms
Running the frontend.
- Change directory into the
frontend
folder - Install dependencies by running
npm install
- Run
npm start
to start the application - Go to
localhost:3000
in the browser
Running the smart contract tests.
- Install dependencies by running
npm install
in the root directory - Compile the smart contract first
npx hardhat compile
- Run
npx hardhat test
to run the smart contract tests
If want to re-deploy the graph follow the instructions below.
- Navigate to the
graph
folder and install the dependencies withnpm install
- Go to the
config
folder and modify the files corresponding to your network. Replace the addresses with the smart contract you'd like to connect to - Modify
package.json
to include your new graph end point API URL by replacing any string leading withmtwichan/...
with your end point - Deploy the graph by running
npm run deploy:<network-name>
where<network-name>
is the name of the network you want to deploy to
Deploy the smart contracts by following the instructions below.
- Configure the deploy script in
scripts/deploy.ts
if required - Configure
hardhat.config.ts
if required - Add the required environment variables shown in
hardhat.config.ts
to a.env
file - Deploy to hardhat by running
npx hardhat run scripts/deploy.ts --network <network-name>
where<network>
is the name of the network you want to deploy to
To try out Etherscan verification, you first need to deploy a contract to an Ethereum network that's supported by Etherscan, such as Ropsten.
In this project, copy the .env.example file to a file named .env, and then edit it to fill in the details. Enter your Etherscan API key, your Ropsten node URL (eg from Alchemy), and the private key of the account which will send the deployment transaction. With a valid .env file in place, first deploy your contract:
hardhat run --network ropsten scripts/deploy.ts
Then, copy the deployment address and paste it in to replace DEPLOYED_CONTRACT_ADDRESS
in this command:
npx hardhat verify --network ropsten DEPLOYED_CONTRACT_ADDRESS "Hello, Hardhat!"