Author Topic: conditional payment feature?  (Read 3151 times)

0 Members and 1 Guest are viewing this topic.

Offline bitcrab

  • Committee member
  • Hero Member
  • *
  • Posts: 877
    • View Profile
  • BitShares: bitcrab
  • GitHub: bitcrab
conditional payment feature?
« on: February 15, 2017, 09:50:32 am »
in China exchanges, BTC  withdrawl are banned for 1 month until the AML measurements are ready, so now many BTC traders go for outside dealings.

DEX is good as people can deposit CNY  inside and then buy BTC from OpenLedger, which is outside of China goverment's control area. however, now the step of "deposit CNY" highly depend on transwiser, if one day the volume become too big to ignore, it's also possible that the China government to ban the business of transwiser.

maybe we can get help from "P2P gateway", however, to make "P2P gateway" feasible, I feel we need a new feature that can be called "conditional payment".

A want to buy100 bitCNY by paying 100 fiat CNY, so he contact B and they agree to make the deal, then B create a "conditional payment" to A for 100 bitCNY, ATM the 100 bitCNY is locked there, when B get 100 fiat CNY payment from A, then he confirm the "conditional payment" and A get the 100 bitCNY。

a "expiration time" can be set that if B neither confirm nor do anything else then after the expiration time the 100 bitCNY will automatically reach A's account.

if something happen that A and B need to cancel the deal then B can request "refund" and get the 100 bitCNY back if A confirm the refund.

if dispute happen, then an escrow, which is defined when the payment is created, will be introduced to decide how to distribute the locked fund.

this "conditional payment"  is useful not only for BTC outside dealing, but also for scenarios like trading goods, international outsourcing, etc,.

possible to introduce this new feature? any thoughts?

Online Thom

Re: conditional payment feature?
« Reply #1 on: February 15, 2017, 03:16:46 pm »
This is a typical escrow service, which I thought was built into BitShares 2.0 now. Escrow always requires trust in a 3rd party (the escrow agent) which may not be acceptable to some. Companies such as transwiser would be ideal candidates to serve as that trusted 3rd party for those in the east.

I'm fuzzy on the details, but IIRC an escrow type service could be setup by transwiser for each escrow transaction. Once deposit into that account is made in full transwiser changes permission to lock out access until depositor signals the recipient has completed the agreed contract, then transwiser opens permissions to recipient to transfer funds.

It's not ideal, and may in fact not even be feasible due to overhead, time etc.

I don't know if there are other solutions for escrow services or not. I believe the ability to setup "supervisor" accounts or accounts with hierarchical permissions were implemented as a "corporate" feature, not an escrow facility.

This is an area we need documentation to describe, if it hasn't been.
Injustice anywhere is a threat to justice everywhere - MLK |  Verbaltech2 Witness Reports: https://bitsharestalk.org/index.php/topic,23902.0.html

Online yvv

  • Hero Member
  • *****
  • Posts: 1181
    • View Profile
Re: conditional payment feature?
« Reply #2 on: February 15, 2017, 04:58:15 pm »
Yes, escrow service would be very useful. It requires trust to 3rd party only in case of dispute, doesn't it?
 

Offline bitcrab

  • Committee member
  • Hero Member
  • *
  • Posts: 877
    • View Profile
  • BitShares: bitcrab
  • GitHub: bitcrab
Re: conditional payment feature?
« Reply #3 on: February 20, 2017, 12:31:53 pm »
This is a typical escrow service, which I thought was built into BitShares 2.0 now. Escrow always requires trust in a 3rd party (the escrow agent) which may not be acceptable to some. Companies such as transwiser would be ideal candidates to serve as that trusted 3rd party for those in the east.

I'm fuzzy on the details, but IIRC an escrow type service could be setup by transwiser for each escrow transaction. Once deposit into that account is made in full transwiser changes permission to lock out access until depositor signals the recipient has completed the agreed contract, then transwiser opens permissions to recipient to transfer funds.

It's not ideal, and may in fact not even be feasible due to overhead, time etc.

I don't know if there are other solutions for escrow services or not. I believe the ability to setup "supervisor" accounts or accounts with hierarchical permissions were implemented as a "corporate" feature, not an escrow facility.

This is an area we need documentation to describe, if it hasn't been.

I feel there are some misunderstanding, in my imagination,  in most of the cases escrow is just "included" as a standby judge for  possible dispute, in more than 95% of the trades there will be no dispute and the escrow need to do nothing, only when dispute happen, the trading parties will be called to judge the dispute.

I feel BTS can go into off-site BTC trading business by providing this "conditional payment" feature, yes this is just a feature and the escrow inside provide service and escrows will charge service fee when they are called to judge.

   

Offline merivercap

  • Hero Member
  • *****
  • Posts: 661
    • View Profile
    • BitCash
Re: conditional payment feature?
« Reply #4 on: February 21, 2017, 12:33:51 am »
This is a typical escrow service, which I thought was built into BitShares 2.0 now. Escrow always requires trust in a 3rd party (the escrow agent) which may not be acceptable to some. Companies such as transwiser would be ideal candidates to serve as that trusted 3rd party for those in the east.

I'm fuzzy on the details, but IIRC an escrow type service could be setup by transwiser for each escrow transaction. Once deposit into that account is made in full transwiser changes permission to lock out access until depositor signals the recipient has completed the agreed contract, then transwiser opens permissions to recipient to transfer funds.

It's not ideal, and may in fact not even be feasible due to overhead, time etc.

I don't know if there are other solutions for escrow services or not. I believe the ability to setup "supervisor" accounts or accounts with hierarchical permissions were implemented as a "corporate" feature, not an escrow facility.

This is an area we need documentation to describe, if it hasn't been.

I feel there are some misunderstanding, in my imagination,  in most of the cases escrow is just "included" as a standby judge for  possible dispute, in more than 95% of the trades there will be no dispute and the escrow need to do nothing, only when dispute happen, the trading parties will be called to judge the dispute.

I feel BTS can go into off-site BTC trading business by providing this "conditional payment" feature, yes this is just a feature and the escrow inside provide service and escrows will charge service fee when they are called to judge.

 

What you described is a standard escrow service.  Only 2 of 3 parties needs to agree so as long as the buyer and seller agree you don't need the judge, and that will happen 95% of the time. The buyer & seller just confirms on their sides.  Only when one party disputes, the judge is necessary. 

I'm actually working on a simple peer-2-peer gateway based on ratings & trust, but this is mainly for small amounts.  For larger amounts I do think escrows will be essential. 

It was planned a while back, but never implemented.  An escrow feature is one of the most immediate features we should implement.   I agree with you [member=23]bitcrab[/member] and would fully support this proposal. 
BitCash - http://www.bitcash.org 
Beta: bitCash Wallet / p2p Gateway: (https://m.bitcash.org)
Beta: bitCash Trade (https://trade.bitcash.org)

Offline fav

  • Administrator
  • Hero Member
  • *****
  • Posts: 4241
  • No Pain, No Gain
    • View Profile
  • BitShares: fav
Re: conditional payment feature?
« Reply #5 on: February 21, 2017, 08:19:19 am »
agreed, escrow should be implemented asap, not sure how much work that would be.
► How-to Buy BitShares: https://goo.gl/i9j2YZ

Offline xeroc

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 12636
  • ChainSquad GmbH
    • View Profile
    • ChainSquad GmbH
  • BitShares: xeroc
  • GitHub: xeroc
Re: conditional payment feature?
« Reply #6 on: February 21, 2017, 12:31:48 pm »
agreed, escrow should be implemented asap, not sure how much work that would be.
You could do that today using a 2-of-3 account .. ideally a service would offer this for a profit and recycle old used and completed escrow accounts instead of registering a new one
Give BitShares a try! Use the http://testnet.bitshares.eu provided by http://bitshares.eu powered by ChainSquad GmbH

Offline bitcrab

  • Committee member
  • Hero Member
  • *
  • Posts: 877
    • View Profile
  • BitShares: bitcrab
  • GitHub: bitcrab
Re: conditional payment feature?
« Reply #7 on: February 21, 2017, 03:38:57 pm »
agreed, escrow should be implemented asap, not sure how much work that would be.
You could do that today using a 2-of-3 account .. ideally a service would offer this for a profit and recycle old used and completed escrow accounts instead of registering a new one

yes, currently it is possible to do that using a 2-of-3 account, however this need to create a 2-of-3 account for each buyer-seller-escrow group, we need much better user experience.

and we need to develop that asap, with this feature, BTS will be an global off-site BTC market...so attractive!

Offline nmywn

  • Sr. Member
  • ****
  • Posts: 266
    • View Profile
Re: conditional payment feature?
« Reply #8 on: February 22, 2017, 06:01:59 am »
"e-screw" account: 3of5 multisig group
e-screw selling ESCREW.CNY UIA against bitCNY.

 If I want to withdraw bitCNY,   i'll convert  them to ESCREW.CNY on the market.
 Next i must send memo to  e-screw: "withdraw [my bank account number]"
 
This should trigger some e-screw's action:
 Forbid me from transfers and trades ESCREW.CNY (conditional payment delivered).
 Check how much i got to withdraw.
 Create virtual order book on the outside webpage, for example "1000 bitCNY 'somerandomstring'
 Now first guy who'll send 'somerandomstring' memo, should receive [my bank account number] back and is obligated to pay 1000 CNY to me.
 
 When I receive money on my bank account, i must send another memo "confirm". Then my ESCREW.CNY must go back to issuer and my account is whitelisted again.
 
This way you don't need to touch CNY at all. I can confirm  transaction without actually being part of multisig group.

However Buyer can be asshole and lock those virtual orders, without intention to buy anything.

However Seller can be asshole too, then Buyer must provide proof of bank transaction.

Good news: you can be asshole only once per account.

Online yvv

  • Hero Member
  • *****
  • Posts: 1181
    • View Profile
Re: conditional payment feature?
« Reply #9 on: February 22, 2017, 04:53:25 pm »
Checkout how byteball dev organized OTC trading for blackbytes. Blackbyte is a private token, which is not tracked in public ledger, only a hash of transaction is submitted to prevent double spend. Long story short, this is implemented the way which makes it impossible to trade blackbytes on BTC exchanges without modification of their code. So, the dev created a slack channel (https://byteball.slack.com/messages/trading_blackbyte, get invite at http://slack.byteball.org) with a chat bot, which allows users to place and query offers right in chat interface. There are also escrow guys who help to conduct trades. Simple and functional. Looks like a perfect scheme for OTC trading between fiat and bitFiat. Can something like this be implemented in bitshares client?

Offline nmywn

  • Sr. Member
  • ****
  • Posts: 266
    • View Profile
Re: conditional payment feature?
« Reply #10 on: February 22, 2017, 07:49:32 pm »
[member=40079]yvv[/member] in trollbox, yes. You can send transactions. Could query market orders too. This could work like console actually.

Offline Diogo Gomes

Re: conditional payment feature?
« Reply #11 on: February 17, 2018, 01:56:51 am »
One possible solution is to use the system adopted by dex Bisq (ex Bitsquare).

They have a model in which fiat is sent by the buyer directly to the seller through bank account or paypal.

For disputes they have arbitrators voted by the network that in our case could be associated with witnesses or a new position of arbitrator created in our network.

In the case of Bisq, the buyer sends fiat and receives tokens. In our case the buyer would send fiat and receive bitXX, the seller sends bitXX and receives fiat without having to use ESCROW.XX.

I think it would be the best way to change fiat by bitXX.

I did not dig deeper into their model but from what I saw it is truly decentralised, even considering the arbitrators is decentralised due to the method of election.

https://bisq.network/faq/#8
« Last Edit: March 14, 2018, 05:40:43 am by Diogo Gomes »

Offline Diogo Gomes

Bitspark's post on Steem
« Reply #12 on: February 22, 2018, 06:11:34 pm »
From Bitspark's post on Steem (https://steemit.com/@bitspark/understanding-the-decentralized-exchange-7-best-practices-you-must-know-to-trade-on-the-dex):

Quote
While most DEX’s are crypto only, to acquire crypto one often still needs to seek out a centralized source you can send a bank transfer to in order to exchange crypto. This means inevitable centralization, KYC, and potential for your bank account to be shut down.

However, DEX’s like Bisq have solved this by essentially creating a private marketplace with escrow for people to exchange fiat and crypto.

A buyer with fiat is connected with a seller with crypto at a market exchange rate. The seller holds the crypto within Bisq which is locked until the seller approves they have received the fiat from the buyer's bank account.

Both parties must approve a transaction for it to be a success. If there is a dispute where the buyer did not make the transaction or the seller says it was not received then the transaction goes to another chosen arbitrator who was trusted by both parties to the transaction to begin with and can resolve disputes in the favour of one side or the other. Once a resolution is reached, the funds are released to the other party on Bisq.

Online Bangzi

  • Full Member
  • ***
  • Posts: 150
    • View Profile
    • Steemit: Bangzi
  • BitShares: bangzi
Re: conditional payment feature?
« Reply #13 on: February 24, 2018, 10:41:27 am »
This feature is very powerful to run web site like LocalBitcoin and localEthereum. After some research, I found that there is Escrow Operations code in STEEM, another graphene project. Perhaps core developers can look into this.

1. Add Escrow Operations in STEEM by BM
https://github.com/steemit/steem/issues/143
https://steemit.com/sip/@dan/escrow-sip-steem-improvement-proposal

2. Open Source STEEM Escrow GUI
https://steemit.com/utopian-io/@reazuliqbal/opensource-steem-escrow-gui
https://steemit.com/escrow/@xtar/open-source-standalone-gui-for-steem-escrow-transactions

Please Vote for My Witness: Bangzi
My Blog: https://steemit.com/@bangzi
请投票支持比特股见证人: Bangzi

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 3300
    • View Profile
    • Steemit Blog
  • BitShares: abit
  • GitHub: abitmore
Re: conditional payment feature?
« Reply #14 on: February 25, 2018, 12:08:21 pm »
This feature is very powerful to run web site like LocalBitcoin and localEthereum. After some research, I found that there is Escrow Operations code in STEEM, another graphene project. Perhaps core developers can look into this.

1. Add Escrow Operations in STEEM by BM
https://github.com/steemit/steem/issues/143
https://steemit.com/sip/@dan/escrow-sip-steem-improvement-proposal

2. Open Source STEEM Escrow GUI
https://steemit.com/utopian-io/@reazuliqbal/opensource-steem-escrow-gui
https://steemit.com/escrow/@xtar/open-source-standalone-gui-for-steem-escrow-transactions
Yes, I'm aware of this.

In regards to porting, we need to do step by step:
* finish the BSIP document https://github.com/bitshares/bsips/issues/44
* get the BSIP approved by BTS holders (stake-based voting)
* arrange dev resources

Contributions are always appreciated.
BTS account: abit
BTS committee member: abit
BTS witness: in.abit