Skip to content

Commit

Permalink
update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
rueshyna committed Jan 19, 2024
1 parent 3b31eae commit 7810122
Showing 1 changed file with 7 additions and 37 deletions.
44 changes: 7 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# TzSafe
TzSafe is a multisig wallet aiming at providing better assurance of security and management of ownership than a traditional single-signed wallet. TzSafe adheres to the [TZIP26](https://gitlab.com/tezos/tzip/-/blob/master/drafts/current/draft-proof-of-event/proof_of_event.md) standard, which is known as "Proof of event."
TzSafe is a multisig wallet aiming at providing better assurance of security and management of ownership than a traditional single-signed wallet. TzSafe adheres to the [TZIP27](https://gitlab.com/tezos/tzip/-/blob/master/drafts/current/draft-proof-of-event/proof_of_event.md) standard, which is the way of signing message for account abstraction.

Multi-signature (also multisig) wallet allows to share the ownership of an account by a smart contract. Each owner can create a proposal to propose transferring Tez or executing other contracts. Signer provides approval stored on-chain by performing Tezos transaction. Once gathering the minimal approvals, the multisig will perform the proposal.

Expand All @@ -12,48 +12,18 @@ The minimal required version can be found by performing `make ligo-version`.
## Entrypoints of multisig
### default
This entrypoint can receive Tez from any source.
- Emit event
- tag: `default`
- data: `(sender, address)`

### create_proposal
Each owner can create proposal through this entrypoint. The entrypoint supports creating a batch of transactions. The batch is atomic and execution by order. If modifing settings are proposed, the modified setting will NOT apply in this batch immediately. The setting will effect on a next batch/transaction.

- proposal that owner can create
- `Transfer of { target:address; parameter:unit; amount:tez }`
- transfer amount only
- `Execute of { target:address; parameter:'a; amount:tez }`
- execute contract with type of parameter `'a`
- `Execute_lambda of { metadata: bytes option; lambda: (unit -> operation)}`
- execute lambda, note that the cost of using `Transfer` and `Execute`is cheaper than `Execute_lambda`
- `Adjust_threshold of nat`
- adjust threshold. the threshold should be >0. Otherwises, errors will occur.
- `Add_owners of address set`
- add owners
- `Remove_owners of address set`
- remove owners

- Emit event
- tag: `create_proposal`
- data: `(proposal id, created proposal)`
Each owner can create proposal through this entrypoint. The entrypoint supports creating a batch of transactions. The batch is atomic and execution by order. If modifing settings are proposed, the modified setting will NOT apply in this batch immediately. The setting will effect on a next batch/transaction. Once a proposal is created, its ID can be located in the corresponding emitted event and can be used for both the signing and resolution of the created proposal.

### sign_proposal
Signers can provide an approval or a disapproval through this entrypoint.

- Emit event
- tag: `sign_proposal`
- data: `(proposal id, owner, agreement)`
### resolve_proposal
Through this entrypoint, owners have the capability to resolve a proposal. Whether the proposal is executed, rejected, or expires, the allocated storage space will consequently be freed.

### proof_of_event_challenge
The adaptation to the TZIP-26 standard includes renaming the `resolve_proposal` entrypoint as `proof_of_event_challenge`. In this context, the `challenge_id` now represents the `proposal_id`, while the payload corresponds to the content of the proposal.

Signers can resolve proposal when minimal requestment is statisfied.

- Emit event
- tag: `resolve_proposal`
- data: `(proposal id, owner)`
- tag: `proof_of_event`
- data: `(chellenge_id, payload)`
If TzSafe requires signing message, the contract owner can process the proof-of-event challenge by initiating a proof-of-event proposal through this entrypoint. This proposal, once created, necessitates signing and resolution as the other regular proposals. Following the resolution of the proposal, an event with tag "%proof_of_event" will be emitted, serving as the equivalent of the signature.

# Deploy
We provide several steps for quick deploying contracts in `app/` to ghostnet.
Expand All @@ -66,5 +36,5 @@ We provide several steps for quick deploying contracts in `app/` to ghostnet.

# Changelog
- 0.1.x: (release-1.0)
- 0.2.x: base on 0.1.x and support the ticket (main branch)
- 0.3.x: base on 0.1.x and support TZIP-26 (release-3.0)
- 0.2.x: base on 0.1.x and support the ticket (release-2.0)
- 0.3.x: base on 0.1.x, better storage space management and support TZIP-27 (release-3.0)

0 comments on commit 7810122

Please sign in to comment.