This is an early draft of the concept to stimulate discussion. It will likely significantly evolve before it’s considered adequate.

Overview

Today FIO Request is used as a Request for Funds. It contains structured information which the receiving wallet is able to interpret to execute a standard token transfer on any blockchain. Some information is standardized to ensure all wallets have the same understanding of the data, specifically blockchain/token codes.

What if that concept was extended to introduce a new type of FIO Request, a Request for Signature. Similarly to Request for Funds, it would contained structured information which the receiving wallet could interpret to execute different type of actions (other than transfer) on other chains.

Request for Signature Types

Smart Contract Interaction Request

This request type would contain information required for the wallet to construct and broadcast a valid blockchain transaction executing a specific action on a specific smart contract on a specific blockchain.

Here’s an example of what the payloads could look like for 2 different blockchains:

The wallet will be able to interpret the data to:

dApp FIOChain NativeBlockchain
@Starter(User)
User->dApp:FIO Address
"Confirmation" = dApp->FIOChain."Request for Signature"
"Pending FIO Requests" = FIOChain."Get Pending FIO Requests"
"Confirmation" = NativeBlockchain."Execute Smart Contract Actions"

Multisignature Request

If a particular blockchain handles multisig via a smart contract (e.g. Ethereum, EOS, FIO), Smart Contract Interaction Request above can be used and sent simultaneously to multiple recipients.

For blockchains which handle multisigs offchain (e.g. Bitcoin) a transaction to be signed needs to be passed. Here’s an example of what the payloads could look like:

Record Signature Data

This action would be similar to current FIO Chain record_obt_data and would record transaction ids from other blockchains as proof of executing requested smart contract transactions.

Multisignature Request it would contain signatures, which could be combined with other signatures to properly execute.

Here’s an example of what the payloads could look like:

Example UI

Wallet Feedback

Wallet

Feedback

EDGE Wallet

  • Interested in Multi-signature Request, including setting up a new multi-sig wallet.

  • Concerned that the Request for Signature has to be signed by a FIO Private Key, which means a central entity has to generate it. This could be alleviate by enabling smart contracts to initiate those requests via oracle network, as described here.

  • Recommended more discussions with dApp developers.

Guarda

At the moment, I'm comparing with walletconnect. It is supported in many services already, and does not require fee for message validation. It seems that their offer is better. However, I have a feeling that this service is not very stable. Despite the fact that many wallets have connected it, it does not work for everyone. I'm not sure yet if this is a problem with wallets or walletconnect. But if you make a service like this that works stably, with all currencies, and is easy to connect to, I'm sure it will be a very strong product.

Trust Wallet

Requested

Coinomi

Requested

Shapeshift

Requested