Algorand-MultiSig is an open source repo that allows Algorand devs to easily spin up an application that enables multi-sig signing.

  • By Algomint
  • Last update: Dec 7, 2022
  • Comments: 7

Algorand Multi-Sig Signer

This repo, includes all of the code necessary to facilitate the signing of multi-signature transactions without exposing SK's.

Contributors

Set-up guide

Design Flow

Screen Shot 2022-07-15 at 5 29 56 pm

Backend

cd backend
go mod tidy
cd cmd
go run main.go

After the above commands have been executed you will have the backend service running on localhost:8081

Now you will have access to the following endpoints (note you will only need the ones with * next to them): Futher documentation of the following endpoints will be avaible in the backend folder

Frontend

cd frontend
npm i or npm install

head to utils/algodClient.ts and update the X-API-Key key-pair with your purestake api key.

npm start

After the above commands have been executed you will have the frontend running on localhost:3000

AlgorandSDK scripts

In this folder you are able to use the provided template to construct the TXN's you would like to be send to the backend to be signed.

cd algo-scripts
npm i or npm install

Create a .env file and store your purestake api in the following format

PURESTAKE_API_TOKEN='example'

Download

Algorand-MultiSig.zip

Comments(7)

  • 1

    Make simple UI improvements to the frontend

    Description

    This PR makes some simple updates to the front-end part of this repo. Specifically it does the following:

    • Adds Prettier as a dependency and provides a basic Prettier configuration file that applies a 'reasonable' code style baseline.
    • Removes CRA's default 'React App' title from the manifest.json and index.html files.
    • Makes a very simple style improvement to the signTxn page

    Resolves #6

  • 2

    Add pull request template

    Description

    This PR creates a standard PR template for this repo. It should be noted that this is just an initial version, as this repo evolves we may find it suitable to modify/improve on this template.

    Closes #5

  • 3

    Make simple UI improvements to the frontend

    Currently the frontend has a very basic UI that was implemented primarily for the purposes of rapidly testing the various functionalities built by the Algomint team. I think we can make some minor improvements to the UI so as to improve it's presentation.

  • 4

    Create PR template

    A standard PR template needs to be created for this repo. This PR template needs to have the following sections:

    • [x] Type of PR (e.g. bugfix, enhancement, refactor)
    • [x] Description
    • [x] Tests
  • 5

    Create issue templates

    It would be useful if there are some standard issue templates created for this repo. Obvious suggestions are issue templates for:

    • [x] New bug report
    • [x] New feature request
    • [x] Development issue template
  • 6

    UI fixes

    Description

    Please include a summary of the changes and the related issue. Please also include relevant motivation and context. List any dependencies that are required for this change.

    Fixes # (issue)

    • UI Beautification
    • Background Animation
    • Title logo (tab)
    • Validation Message color and placement fixed
    • Responsiveness on all devices
    • Steps made good to look

    Type of change

    Please delete options that are not relevant.

    • [x] This change requires a documentation/README update

    How Has This Been Tested?

    Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

    Using Chrome developers tool I tested all the responsiveness and checked the UI on Edge, Firefox, and Chrome

    Checklist:

    • [x] I have performed a self-review of my code
    • [x] I have commented my code, particularly in hard-to-understand areas
    • [x] I have made corresponding changes to the documentation/README
    • [x] My changes generate no new warnings
    • [] I have added tests that prove my fix is effective or that my feature works
    • [x] New and existing unit tests pass locally with my changes
  • 7

    Greenhouse Bounty

    Prize Title

    Greenhouse Hack

    Prize Bounty

    1st Place - 15,000 ALGO 2nd Place - 10,000 ALGO

    Challenge Description

    Recently the Algomint dev team built and open-sourced code that does a “2 of 3” multi-signature deployment of transactions to Algorand. This can be especially useful for improving security in scenarios such as deploying or upgrading a smart contract or when creating new NFT assets in Algorand. The challenge proposed is for a team to leverage this in executing one or more of the following tasks:

    • Use this code, as is or with improvements, inside your hackathon task or project to do a secure “m of n” multi-signature deployment for your hackathon entry’s on-chain Algorand smart contracts or NFT assets.
    • Improve the multi-sig deployment code to omake the number of signers a configurable property so that it can be re-used without code changes for any “m of n” multi-signature deployment. omitigate against malicious usage such as propagating false transactions for signing by identifying any potential exploit vector and demonstrating a proposed solution in code changes made
    • Improve the usability of the sample web app included in the sample code that is used to facilitate the 2 of 3 signing. Examples of UX improvements could be to oshow details of the TXN proposed for signing , and who created that TXN oauthenticate through wallet verification of a whitelisted address before allowing access to the protected route for the signing page oa “wizard” for deploying an NFT or updating a smart contract to the Algorand blockchain

    Submission Requirements

    Valid submissions should contain:

    • A “Loom” or other live video demonstrating the team’s use of the multi-sig deployment in publishing smart contracts on the Algorand testnet
    • If submitting code or process improvements, it is expected that the Loom or live video also demonstrate the changes made here
    • A public Github repo (a fork of the original code with the submission changes checked in) along with a valid README that can be followed to initiate a deployment for testing locally the changes demonstrated in the Loom video submission. Bonus points for a semantic git commit message history that allow judges to follow along the logic of changes made.

    Judging Criteria

    Submissions will be awarded weighted points by each of 3 judges from Algomint with the highest averaged total being the overall winner. Weightings for points will be:

    Criteria Max Points

    • Demonstrates use of the multi-sig deployment in their submission

    10

    • Improvements to the multi-sig deployment code

    20

    • Improvement to the multi-sig UX for signers or proposers

    20

    • Identification of any bugs or exploit vector in the multi-sig security model

    25

    • Improvements or fixes to the multi-sig and security model that mitigates any potential exploit vector(s) demonstrated

    25

    Total points 100

    Winner Announcement Date

    Winners will be announced at most 2 weeks after the hackathon deadline for submissions ends, most likely much sooner, depending on the volume of submissions received for review.

    Resources

    Open source repo for Algomint’s multi-sig for Algorand - https://github.com/Algomint/Algorand-MultiSig Getting the current Multi-sig deployment code running and doing a test multi-sig deployment process flow: https://www.loom.com/share/80d882daedc64986aac7f21194c62d88 Demo of the current Multi-sig deployment – dive into the backend: [TBD] Algomint Discord invite: https://discord.gg/5XynvWJqvZ