Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smoove/addressownershipverification
Ethereum address ownership verification
https://github.com/smoove/addressownershipverification
ethereum ethereum-contract smart-contracts solidity
Last synced: 17 days ago
JSON representation
Ethereum address ownership verification
- Host: GitHub
- URL: https://github.com/smoove/addressownershipverification
- Owner: smoove
- License: mit
- Created: 2017-02-25T16:29:18.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-03-13T22:38:40.000Z (over 7 years ago)
- Last Synced: 2024-10-27T09:03:03.254Z (17 days ago)
- Topics: ethereum, ethereum-contract, smart-contracts, solidity
- Language: JavaScript
- Homepage:
- Size: 10.7 KB
- Stars: 1
- Watchers: 3
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# An ethereum address ownership verification smart contract
Think SMS cell phone number verification for ethereum addresses.**Possible use cases**:
Exchanges could use this contract to verify their user's withdrawal addresses before sending them crypto currencies.
This could remove a possible user error from the withdrawal processes.
# Requirements
* [truffle](http://truffleframework.com) v3.0.2 or higher
* [testrpc](https://github.com/ethereumjs/testrpc) must be running for local testing# Live Version
The contract is deployed at address [0x6d2f190e6fd3bece517cb817254e8411249656a6](https://etherscan.io/address/0x6d2f190e6fd3bece517cb817254e8411249656a6#code) on the Ethereum **live** blockchain.# Local installation
```bash
git clone https://github.com/smoove/AddressOwnershipVerification.git
cd AddressOwnershipVerification
npm install
truffle compile
truffle migrate # make sure testrpc/geth/parity is running
npm run build
truffle serve
```Then navigate to [http://localhost:8080/](http://localhost:8080/) in your browser.
# Usage
## Definitions
`address`: An ethereum address`transactor`: The party that wants to verify another parties ownership over `address`
`transactee`: The party that is asked to verify their ownership of `address`
`deposit`: A randomly generated number. It represents the amount of wei `transactee` has to send to verify ownership of `address`.
## Suggested workflow
1. Transactor receives an address from transactee, who claims to own said address.
2. Transactor generates a random number, `deposit`. This can be anything greater than 0 up to uint32's max value (4294967295).
3. Transactor calls `request(address, deposit)`
4. Transactor tells transactee to send `deposit` amount of wei to this contract - Transactee could also listen for the `RequestEvent` event to get notified.
5. Transactee sends `deposit` amount of wei to this contract from `address`
6. Transactor listens for the `TrustEvent` event or gets informed by transactee that the deposit has been sent
7. Transactor can now call `verify(transactor, address)` to know wether or not transactee has fullfilled the requestoptional:
* Transactor or transactee can call `removeRequest(transactor, transactee)` to cancel a pending request before it was verified. This triggers the `RemoveRequestEvent` event.
* Transactor or transactee can call `revoke(transactor, transactee)` to revoke the verification and return deposit to transactee. This triggers the `RevokeEvent` event.# Events
## RequestEvent
```
event RequestEvent(address indexed transactor, address indexed transactee, uint32 indexed deposit);
```
Triggered when a new request is created.## RemoveRequestEvent
```
event RemoveRequestEvent(address indexed transactor, address indexed transactee);
```
Triggered when a pending request is removed by either party before it was verified.## VerificationEvent
```
event VerificationEvent(address indexed transactor, address indexed transactee, uint32 indexed deposit);
```
Triggered when a pending request is successfully verified.## RevokeEvent
```
event RevokeEvent(address indexed transactor, address indexed transactee, uint32 indexed deposit);
```
Triggered when either party revokes an existing verification.# Running tests
```bash
truffle test
```