#### LocalCoin: An Ad-hoc Payment Scheme for Areas with High Connectivity - Dimitris Chatzopoulos - Sujit Gujar - Boi Faltings - Pan Hui > Presented by Moin Hussain Moti --- ### Motivation Bitcoin, as well as other less popular cryptocurrencies, require their miners to employ devices high computation capabilities and to be interconnected via the Internet. --- ### Contribution A location based, ad-hoc and peer-to-peer cryptocurrency that requires neither an Internet connection nor devices with high computational capabilities and is based on the connectivity between users that opportunistically exchange messages. --- ### Main Challenges - Proof of Ownership - Double Spending Avoidance - Incentives --- ### Proof of Ownership - Block Size is denoted by ==$BS$==. - To create a block, a minimum number of users must verify each transaction, denoted by ==$mVu$==. --- ### Double Spending Avoidance - Bitcoin’s proof of work is based on the fact that cheating is improbable because a malicious user has to solve hard problems at a faster rate than the total remaining users. - In LocalCoin, cheating is made very difficult because a malicious user has to misinform the majority of a set of _trusted users_. - Every user in the LocalCoin protocol selects the users she trusts. ---- #### LocalCoin avoids double spending in the following ways: The receiver of one transaction will accept the transaction if and only if she receives the transaction signed by at least a minimum number of trusted users of her trusted network, denoted by ==$mTr$==. ---- To avoid fake block creation attempts by a set of collaborative malicious users, LocalCoin enforce the average distance between the users that will verify the creation of a new block to be more than ==$aVd$==. --- ### Incentives _Transaction fees_ motivate users to forward messages and _block fees_ to motivate them to store as many blocks from the distributed block chain as possible. ---- #### Transaction Fees - Transaction fees are important because mobile users are competing for them and they broadcast any received transaction. - Every transaction includes an amount of localcoins that are collected by the mobile user who will first inform the receiver of the transaction about the transaction. ---- #### Block Fees - Block fees are important because users store the created blocks in order to be able to verify the creation of new ones. - Whenever a block is created, the mobile users that verified each transaction because they where aware of it share the localcoins that were included in these transactions as block fees. --- ### The Settings - Let $U$ be the total number of users. - Each user $i \in U$ can utilize the service if she is inside the geographical area, $d_i \in D$ and can change $d_i$ only by moving to another location and not by manipulating it. ---- - Any user $i \in U$ is able to exchange localcoins with another user $j \in U$ by creating one transaction $t_{i\rightarrow j}$. - Any user $j$ has a set of trusted users ==$TN_j$==. - The selection of $TN_j$ depends on $j$ and they are responsible for guaranteeing that any received transaction with $j$ as a destination should be examined before being broadcast. ---- #### Transaction Template | Input | Output | | -------------------------- | ---------- | | $TN_i$ | $o_j$ | | $h(t_{*\rightarrow i}(1))$ | $o_i$ | | $h(t_{*\rightarrow i}(2))$ | $trf_{ij}$ | | $h(t_{*\rightarrow i}(3))$ | $bf_{ij}$ | | $\ldots$ | $b_i$ | --- ### Transacting Messages - $send(i,j,t_{i\rightarrow j})$: The send command will broadcast $t_{i\rightarrow j}$ to all the nearby users (neighbors). ---- - $receive(t_{i\rightarrow j}, k)$: She checks the sender and receiver and if she is not familiar with either of them she forwards the message hoping to collect the transaction fees. - If she belongs to the trusted users of the receiver of the transaction, she examines the input transactions and signs the message if she is able to validate all of them. - If she receives the message by a trusted user, she updates her transaction database according to the signed message. ---- - $process(t_{i\rightarrow j}, k)$: If she received the same transaction before, she ignores the message unless it is now signed by another trusted user of j. - After receiving the transaction, $j$, has to wait for at least $mTr$ of her $TN_j$ trusted users to sign and forward the transaction to her. - The first user who forwards this message to j, regardless of being in her trusted users, will receive the amount of $trf_{ij}$. ---- - $ack(i,j,t\rightarrow j)$: If $j$ receives the message from $mTr$ users of her trusted network $TN_j$, then she broadcasts an acknowledgment message. --- ### Block Creation - $build$: Whenever a user $l$ collects $BS$ transactions (both $send$ and $ack$), that are not yet verified, she tries to build a new block. - She requires agreement of $mVu − 1$ other users about the validity of the $BS$ transactions in order to reach to a consensus. - Her signed message also contains her location, $d_l$ and a current value of average distance vector $d$. ---- - $verify$: The first $mVu$ users who verify all the transactions in the create message and have average distance between each other bigger that $aVd$ will share the block fees. - Every user $k$ who receives a verify message checks her database for unverified transactions and if she has any of the included in the message she signs them and forwards the message. ---- - Before forwarding the message, user k updates the distance entries, which she has signed. - If she detects a double spending attempt, she deletes her entry if it has a later time-stamp or she signs her entry and adds it into the message if it has an earlier time-stamp. - In case of double spending detection, user $k$ sets the entry for the corresponding transaction to 0 and attaches and signs her detected pair with a newer timestamp. ---- - $create$: Users who receive a message with transactions that are verified $mVu$ times and have average distance bigger than $aVd$ apart from forwarding the message they also broadcast a create message that defines the users who will share the block fees. --- ### Block Management - $delete$: The delete command is triggered after the create command in order to delete all the input transactions to the freshly verified ones since they can not be used any more. - After deleting all the transactions of one block, the whole block is deleted. ---- - $sync$: Any user can call sync function by giving only the time-stamp of her last update. By doing so, any nearby trusted user will send the newly verified transactions as well as the hash of the ones that have been deleted. --- # Thank You
{"metaMigratedAt":"2023-06-15T01:00:44.030Z","metaMigratedFrom":"YAML","title":"LocalCoin Slides","breaks":true,"description":"View the slide with \"Slide Mode\".","slideOptions":"{\"theme\":\"moon\"}","contributors":"[{\"id\":\"b0437d1c-81da-42b0-887f-8a673e27c89f\",\"add\":7453,\"del\":2853}]"}
    343 views