From adcffeff008b6ff53cd0b6f0e70af51b0593f659 Mon Sep 17 00:00:00 2001 From: Vidal Chriqui Date: Tue, 26 Dec 2017 21:19:34 +0100 Subject: [PATCH 01/15] Create eip-770.md --- EIPS/eip-770.md | 124 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 EIPS/eip-770.md diff --git a/EIPS/eip-770.md b/EIPS/eip-770.md new file mode 100644 index 00000000000000..0aa362e7c20ba8 --- /dev/null +++ b/EIPS/eip-770.md @@ -0,0 +1,124 @@ +## Preamble + + EIP: 770 + Title: Decentralized Booking Protocol Standard + Author: Vidal Chriqui + Type: Standard + Category : ERC + Status: Draft + Created: 2017-12-20 + Requires : ERC 20 + +## Abstract + +The following describes standard functions for a decentralized booking protocol that can be used to reserve any kind of resource (Hotel, concert ticket, restaurant table). +The protocol involves following participants : + +- Provider : an entity providing its own resource or a third-party party resource to be booked +- Booker : an entity that books the resource for itself or a third party +- Booking infrastructure : a public "location" where providers can "post" resource availability data and where these resources can be searched by bookers. The booking infrastructure facilitates signaling between providers and bookers by aggregating a high volume of resource type and availabilities. +- RES : A booking smart contract implementation of the decentralized standardized BTU protocol. + +## Motivation + +The Booking Token Unit (BTU) protocol is a building block for any decentralized application (dApp) or web site willing to implement booking features for their end-users. +This standard also brings interoperability among decentralized applications that incorporate it. +We strongly believe that a transparent and public inventory enabled by an open-source standardized protocol would considerably lower the entry barriers to many Internet booking markets. + +## Specification + +The BTU protocol involves potentially ten steps and our standardized decentralized reservation contract (RES). Some of following steps can be relayed off-chain, but are always settled on-chain. + + + +Hereafter the general sequence : + +(Step 1.1) Provider is creating an “availability offer” (OFFER) specifying : + +* resource id OR bundle id. A bundle is a group of resources. +* resource name OR bundle name +* resource category +* deposit amount in BTU : amount requested for escrow in order to allow a reservation request +* commission amount in BTU : amount paid to booker +* availability start date, +* availability end date +* limit date and time for a free reservation cancellation +* signed (r,s,v) hash of previous information. This signed hash serves as a signed identifier of the resource to be reserved. +* Metadatas : daily price of the resource (fiat amount to be paid at resource “delivery”), links to images, long description, key-values that can be used as search criteria, etc... +The availability data is broadcasted over any communication channel, ideally a decentralized off-chain solution. + +(Step 1.2) At any moment, the provider can update the resource metadata by broadcasting a new message. +It is very common that yield management requires many prices (fiat price of the resource) update during the same day. This update only impacts the off-chain components. + +(Step 2) Booker is looking for a resource is querying all resources matching is criteria and is selecting a resource he is willing to reserve + +(Step 3.1) In the same operation : +Booker is approving to RES smart contract the required amount of BTU to make the booking (amount defined in step 1.1 by the provider) +A booking entry is registered into the smart contract with following information + +* Signed hash of resource +* Signed pointer to all full offer information (datas + metadatas) at the moment of the reservation request. Those information are stored in the offchain booking infrastructure. +* Public address matching the hash signature +* desired reservation start date +* desired reservation end date +* status : RESERVATION_REQUESTED + +(Step 3.2) Booker broadcasts the resource reservation request to the Booking infrastructure adding all end-user profile information off-chain that may be necessary for the reservation approval. This would help comply with privacy protection requirements. +It is the responsibility of the Booker to notify its end user customer of the full resource information and the provider signature (Availability “snapshot” data). This can be used as proof of reservation details in (the extreme) case resource information at reservation time is deleted from off-chain infrastructure. + +(Step 4) Provider is validating the reservation request and broadcasts the new status to “RESERVATION_CONFIRMED”. + +(Step 5) RES smart contract is updating the reservation status to “RESERVATION_CONFIRMED” + +(Step 6.1 - Optional) Booker cancels the reservation by broadcasting a cancellation request. This triggers a submission to the RES smart contract that empties the registries for this resource. +Depending on the conditions and cancellation date, the BTU escrowed into the RES smart contract are affected back to the user or to the provider + +(Step 6.2 - Optional) Provider cancels the reservation by broadcasting a cancellation request. This triggers a submission to the RES smart contract that empties the registries for this resource. RES smart contract is releasing the escrowed amount to booker. + +(Step 7.1 & 7.2) Booker is notifying that the resource has been paid (presumably at resource check-out). RES smart contract is releasing the escrowed BTU back to user in addition to a BTU agreed commision. + +## Implementation + +The implementation involves following functions : + +- publishAvailabilities (likely off-chain) : Publishes one or multiple available resources for reservations and for being “searchable”. +- listAvailabilities (likely off-chain) : List all available resources matching a search criteria +- requestReservation : Request for a reservation. The function can be used for initial reservation request OR updating +- getReservationStatus : Read reservation status. Following values are possible : REQUESTED, REJECTED, CONFIRMED + + +``` +contract ERC770 is ERC20 { + // Availability structure + enum BookingStatus { REQUESTED, REJECTED, CONFIRMED, CANCELLED } + struct availability { + address _contractAdress; + uint _resourceId ; // resource id OR bundle id + uint _type; // Type of Availability + uint _minDeposit ; // minimum BTU deposit for booking this resource + uint _commission ; // commission amount paid to booker in BTU + uint _freeCancelDateTs; // Limit date for a reservation cancellation + uint _statDateTs; //availability start date timestamps + uint _endDateTs; //availability end date timestamps + BookingStatus _bookingStatus ; // reservation status + string _metaDataLink // Link to Meta Data of the bookable resource (desc, image links, etc…) + } + //Submit one or multiple availability - implementation will be off-chain + function publishAvailabilities (address _owner, availability[] _availability, bytes32 signatureProof ) constant returns (uint status); + //Query Availabilities - implementation will be off-chain + function ListAvailabilities(address _requester, string _criterias) constant returns (availability[] a); + //Request reservation + function requestReservation(address _requester, availability _availability) constant returns (uint status); + //Check booking status + function getReservationStatus(address _requester, availability _availability) constant returns (BookingStatus status); +} +``` + +## Additional References + +[BTU website](http://www.btuprotocol.com) + + +## Copyright + +All contributions are made under the [GNU General Public License v3](https://www.gnu.org/licenses/gpl-3.0.en.html) From 4a35d701752fb7ae4777748ff9be8f24f220cd81 Mon Sep 17 00:00:00 2001 From: Vidal Chriqui Date: Tue, 26 Dec 2017 21:22:12 +0100 Subject: [PATCH 02/15] Create sample.md --- EIPS/eip-770/sample.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 EIPS/eip-770/sample.md diff --git a/EIPS/eip-770/sample.md b/EIPS/eip-770/sample.md new file mode 100644 index 00000000000000..8b137891791fe9 --- /dev/null +++ b/EIPS/eip-770/sample.md @@ -0,0 +1 @@ + From fdcd1ab80c488198848674ea4c3810240d3216b7 Mon Sep 17 00:00:00 2001 From: Vidal Chriqui Date: Tue, 26 Dec 2017 21:23:33 +0100 Subject: [PATCH 03/15] Add files via upload --- EIPS/eip-770/protocol-steps.png | Bin 0 -> 96300 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 EIPS/eip-770/protocol-steps.png diff --git a/EIPS/eip-770/protocol-steps.png b/EIPS/eip-770/protocol-steps.png new file mode 100644 index 0000000000000000000000000000000000000000..9a46f211db1bf46057216b66e315404695768b3b GIT binary patch literal 96300 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