<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bgeron</id>
	<title>Bitcoin Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bgeron"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Bgeron"/>
	<updated>2026-05-12T15:48:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Secure_Trading&amp;diff=25922</id>
		<title>Secure Trading</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Secure_Trading&amp;diff=25922"/>
		<updated>2012-04-30T12:23:55Z</updated>

		<summary type="html">&lt;p&gt;Bgeron: A signature is unforgeable, not unforgettable&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Secure Trading Online&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bitcoin users may want to trade bitcoin directly with each other in an over-the-counter market. This topic is a guide on how to set up your online identity and best practices for trading with others in the Bitcoin community.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Within the Bitcoin community, many are very careful with their security and identity. This is primarily for two reasons:&lt;br /&gt;
# There is no violent body to cover your back for you, or, more simply, there are no courts to seek assistance from if your transaction sours.&lt;br /&gt;
# One’s reputation is the most important thing that any user has; traders will take very little risk with new users who have not proven themselves (as they could just be last week’s scammer with a new identity).&lt;br /&gt;
 &lt;br /&gt;
The Bitcoin community uses a few tools to help protect privacy, and thus identity. The first and most important is a [[Securing Your Computer|Secure Computer]].&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Before proceeding please make sure you have completed the [[Securing Your Computer]] guide; this guide assumes that your computer is secure both physically and in software.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are trading within Canada you are encouraged to use Interac e-transfer and Clearcoin (now closed) as outlined on [[Secure Trading-CAD-interac|this page]].&lt;br /&gt;
&lt;br /&gt;
==Creating a secure identity==&lt;br /&gt;
The first step is to create a cryptographically secure public-private key-pair.  This will be used as the basis of keeping both your wallet (see [[Securing your wallet]]) and your identity secure.&lt;br /&gt;
&lt;br /&gt;
===Creating your first [http://en.wikipedia.org/wiki/Pretty_Good_Privacy PGP] key-pair===&lt;br /&gt;
A PGP key-pair serves two very important functions:&lt;br /&gt;
# To sign information with an unforgeable signature&lt;br /&gt;
# To decrypt things that other people encrypt for you&lt;br /&gt;
&lt;br /&gt;
This allows you to both conduct business privately (encryption), and give out promises that you cannot deny making (signature).&lt;br /&gt;
==== Installing GPG ====&lt;br /&gt;
Virtually all Linux distributions include [http://en.wikipedia.org/wiki/GNU_Privacy_Guard GPG] in their default configurations. However windows doesn&#039;t provide it by default.&lt;br /&gt;
&lt;br /&gt;
===== Microsoft Windows:=====&lt;br /&gt;
On windows, the recommend package that contains gpg is the [http://en.wikipedia.org/wiki/Git_%28software%29 Git] package by the [http://code.google.com/p/msysgit msysgit project].  This package contains a group of unix tools that are very useful for any windows installation.&lt;br /&gt;
&lt;br /&gt;
* Navigate to [[Git|msysgit]] https://code.google.com/p/msysgit/downloads/list&lt;br /&gt;
* Select the latest &#039;&#039;Git&#039;&#039; package. (Git-1.7.4-preview20110204.exe)&lt;br /&gt;
* When installing Git on the &#039;&#039;Adjusting your PATH environment&#039;&#039; screen, select: &#039;&#039;Run Git and included Unix tools from the Windows Command Prompt&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
This option will install both Git and its supporting tools that include [[gpg]] into the windows PATH file.  This will enable any windows application to access gpg.&amp;lt;br /&amp;gt;&lt;br /&gt;
On some (rare) systems this option that replaces the default windows tools will cause issues... However on most it should be fine.&lt;br /&gt;
* After installation, gpg can be used by entering &#039;gpg&#039; into any windows cmd shell.&lt;br /&gt;
&lt;br /&gt;
==== Setting up OpenPGP email ====&lt;br /&gt;
Once you have GPG installed on your system, it is recommended that you use Thunderbird that works on both Windows and Linux systems:&lt;br /&gt;
&lt;br /&gt;
===== All: =====&lt;br /&gt;
# Install Thunderbird: https://www.mozillamessaging.com/en-GB/ &lt;br /&gt;
# Setup your email account with Thunderbird.&lt;br /&gt;
# Install the Enigmail plugin for Thunderbird: https://addons.mozilla.org/en-US/thunderbird/addon/enigmail/&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upon loading Enigmail, Thunderbird will ask you to make a new ‘identity,’ follow this wizard and you will have created your identity.&amp;lt;br /&amp;gt;&lt;br /&gt;
You should backup your private key in a secure place.&amp;lt;br /&amp;gt;&lt;br /&gt;
Secondary, you should create a revocation certificate and store that in a different secure place (maybe print it out and store it in your fire safe).&lt;br /&gt;
&lt;br /&gt;
===Register with [#bitcoin-otc]===&lt;br /&gt;
Follow the guide here: http://wiki.bitcoin-otc.com/wiki/Using_bitcoin-otc&lt;br /&gt;
&lt;br /&gt;
===Register the same username at the popular places:===&lt;br /&gt;
* [[Bitcoin Forum]]&lt;br /&gt;
* [[Bitcoin.it_Wiki|Bitcoin Wiki]]&lt;br /&gt;
* [[Bitcoin:Community_portal#IRC_Chat|Freenode IRC]]&lt;br /&gt;
Use a strong and different password for each of these places, keeping your passwords in a secure place.  This will allow other people in the community to track you across the different Bitcoin related sites.  Also making identity theft online more challenging.&lt;br /&gt;
&lt;br /&gt;
==Best Practices with trading==&lt;br /&gt;
===Use Bitcoin-OTC===&lt;br /&gt;
The [[Bitcoin-otc|Bitcoin OTC]] acts as a secure &#039;Address Book&#039; within the bitcoin community.&lt;br /&gt;
* Always require the user to become registered with #bitcoin-otc.&lt;br /&gt;
* Require a signed message from the fingerprint quoted at: http://bitcoin-otc.com/viewgpg.php&lt;br /&gt;
* Follow additional [http://wiki.bitcoin-otc.com/wiki/Using_bitcoin-otc#Risk_of_fraud recommendations] for avoiding fraud.&lt;br /&gt;
&lt;br /&gt;
====Using the Web-Of-Trust====&lt;br /&gt;
One of the key features of the Bitcoin OTC is the Web of Trust, this allows users to &#039;rate&#039; each other.  One can have more confidence trading with a user that has many good ratings.&lt;br /&gt;
* http://bitcoin-otc.com/viewratings.php&lt;br /&gt;
&lt;br /&gt;
===Make sure both parties agree to the terms of the trade with signed messages===&lt;br /&gt;
* Get a PGP signed quote, and check the signature.&lt;br /&gt;
* Send a PGP signed receipt.&lt;br /&gt;
This allows either party to go public if the trade has become sour and stops your trading partner from claiming the details of the agreement were somehow different.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Search the Bitcoin Forum for the username of the person that you are trading with. Check if the user has provided constructive and useful advice to other parties.  And, most importantly, check for any claims that the user has scammed.&lt;br /&gt;
&lt;br /&gt;
===Use an escrow===&lt;br /&gt;
Trading might benefit from an [[:Category:Escrow_services|escrow service]] such that bitcoins are disbursed only after contract terms have been met.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, found in Bitcoin&#039;s community are trusted individuals willing to act as independent, third-party escrow brokers.&lt;br /&gt;
&lt;br /&gt;
[[de:Sicheres_Handeln]]&lt;br /&gt;
[[zh-cn:交易安全]]&lt;/div&gt;</summary>
		<author><name>Bgeron</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Weaknesses&amp;diff=7575</id>
		<title>Weaknesses</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Weaknesses&amp;diff=7575"/>
		<updated>2011-04-23T09:28:40Z</updated>

		<summary type="html">&lt;p&gt;Bgeron: /* Coin destruction */ cent = 100, therefore 1 bitcent should be 0.01 BTC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Might be a problem ==&lt;br /&gt;
&lt;br /&gt;
=== Tracing a coin&#039;s history ===&lt;br /&gt;
Tracing a coin&#039;s history can be used to connect identities to addresses. [[Anonymity|More info]].&lt;br /&gt;
&lt;br /&gt;
=== Cancer nodes ===&lt;br /&gt;
It&#039;s trivial for an attacker to fill the network with clients controlled by him. This might be helpful in the execution of other attacks.&lt;br /&gt;
&lt;br /&gt;
For example, an attacker might connect 100,000 IP addresses to the IRC bootstrap channel. You would then be very likely to connect only to attacker nodes. This state can be exploited in (at least) the following ways:&lt;br /&gt;
* The attacker can refuse to relay blocks and transactions from everyone, disconnecting you from the network.&lt;br /&gt;
* The attacker can relay only blocks that he creates, putting you on a separate network. You&#039;re then open to double-spending attacks.&lt;br /&gt;
* If you rely on transactions with 0 confirmations, the attacker can just filter out certain transactions to execute a double-spending attack.&lt;br /&gt;
* Low-latency encryption/anonymization of Bitcoin&#039;s transmissions (With Tor, JAP, etc.) can be defeated relatively easy with a timing attack if you&#039;re connected to several of the attacker&#039;s nodes and the attacker is watching your transmissions at your ISP.&lt;br /&gt;
&lt;br /&gt;
Bitcoin makes these attacks more difficult by only making an outbound connection to one IP address per /16 (x.y.0.0). Incoming connections are unlimited and unregulated, but this is generally only a problem in the anonymity case, where you&#039;re probably already unable to accept incoming connections.&lt;br /&gt;
&lt;br /&gt;
Looking for suspiciously low network hash-rates may help prevent the second one.&lt;br /&gt;
&lt;br /&gt;
=== No authentication for IP transfers ===&lt;br /&gt;
Since there&#039;s no authentication when sending to an [[IP address]] (as opposed to a [[Address|Bitcoin address]]), executing a man-in-the-middle attack and stealing the sent BitCoins is trivial. This attack is downright &#039;&#039;likely&#039;&#039; if you&#039;re using Tor.&lt;br /&gt;
&lt;br /&gt;
=== Packet sniffing ===&lt;br /&gt;
Someone who can see all of your Internet traffic can easily see when you send a transaction that you didn&#039;t receive (which means that it&#039;s yours). This would be made more difficult (but not impossible) if node-to-node encryption was used.&lt;br /&gt;
&lt;br /&gt;
== Probably not a problem ==&lt;br /&gt;
&lt;br /&gt;
===Breaking the cryptography===&lt;br /&gt;
SHA-256 and ECDSA are considered very strong currently, but they might be broken in the far future. If that happens, BitCoin can shift to a stronger algorithm. [http://www.bitcoin.org/smf/index.php?topic=191.msg1585#msg1585 More info].&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
BitCoin can easily scale beyond the level of traffic VISA sees globally today. See the discussion on the [[scalability]] page for more information.&lt;br /&gt;
&lt;br /&gt;
===Segmentation===&lt;br /&gt;
If there is even a &amp;quot;trickle&amp;quot; of a connection between two sides of a segmented network, things should still work perfectly. When block chains are combined, all of the non-generation transactions in the shorter chain are re-added to the transaction pool -- they&#039;ll start over at 0/unconfirmed, but they&#039;ll still be valid. No mature transactions will be lost unless the segmentation persists for longer than ~120 blocks. Then generations will start to mature, and any transactions based on those generations will become invalid when recombined with the longer chain. [http://www.bitcoin.org/smf/index.php?topic=241.msg2071#msg2071 More info].&lt;br /&gt;
&lt;br /&gt;
=== Attacking all users ===&lt;br /&gt;
The IP addresses of most users are totally public. You can use Tor to hide this, but the network won&#039;t work if everyone does this. BitCoin requires that &#039;&#039;some&#039;&#039; country is still free.&lt;br /&gt;
&lt;br /&gt;
=== Dropping transactions ===&lt;br /&gt;
Nodes that generate blocks can choose not to include a transaction in their blocks. When this happens, the transaction remains &amp;quot;active&amp;quot; and can be included in a later block. Two things discourage this:&lt;br /&gt;
* Nodes only hash a fixed-size &#039;&#039;header&#039;&#039;, so there is no speed advantage to dropping transactions.&lt;br /&gt;
* [[Satoshi]] has [http://www.bitcoin.org/smf/index.php?topic=165.msg1595#msg1595 communicated] that he will write code to stop this kind of thing if it becomes a problem.&lt;br /&gt;
&lt;br /&gt;
=== Attacker has a lot of computing power ===&lt;br /&gt;
An attacker that controls more than 50% of the network&#039;s computing power can, for the time that he is in control, exclude and modify the ordering of transactions. This allows him to:&lt;br /&gt;
* Reverse transactions that he sends while he&#039;s in control&lt;br /&gt;
* Prevent some or all transactions from gaining any confirmations&lt;br /&gt;
* Prevent some or all other generators from getting any generations&lt;br /&gt;
The attacker &#039;&#039;can&#039;t&#039;&#039;:&lt;br /&gt;
* Reverse other people&#039;s transactions&lt;br /&gt;
* Prevent transactions from being sent at all (they&#039;ll show as 0/unconfirmed)&lt;br /&gt;
* Change the number of coins generated per block&lt;br /&gt;
* Create coins out of thin air&lt;br /&gt;
* Send coins that never belonged to him&lt;br /&gt;
&lt;br /&gt;
It&#039;s much more difficult to change historical blocks, and it becomes exponentially more difficult the further back you go. As above, changing historical blocks only allows you to exclude and change the ordering of transactions. It&#039;s impossible to change blocks created before the last checkpoint.&lt;br /&gt;
&lt;br /&gt;
Since this attack doesn&#039;t permit all that much power over the network, it is expected that no one will attempt it. A profit-seeking person will always gain more by just following the rules, and even someone trying to destroy the system will probably find other attacks more attractive. However, if this attack is successfully executed, it will be difficult or impossible to &amp;quot;untangle&amp;quot; the mess created -- any changes the attacker makes might become permanent.&lt;br /&gt;
&lt;br /&gt;
=== Spamming transactions ===&lt;br /&gt;
&lt;br /&gt;
It is easy to send transactions to yourself repeatedly. If these transactions fill blocks to the maximum size (1MB), other transactions would be delayed until the next block.&lt;br /&gt;
&lt;br /&gt;
This is made expensive by the [[transaction fee|fees]] that would be required after the 50KB of free transactions per block are exhausted. An attacker will eventually eliminate free transactions, but Bitcoin fees will always be low because raising fees above 0.01 BTC per KB would require spending transaction fees. An attacker will eventually run out of money. Even if an attacker wants to waste money, transactions are further prioritized by the time since the coins were last spent, so attacks spending the same coins repeatedly are less effective.&lt;br /&gt;
&lt;br /&gt;
== Definitely not a problem ==&lt;br /&gt;
&lt;br /&gt;
===Coin destruction===&lt;br /&gt;
BitCoin has 8 decimals of precision, so the entire network could operate on just a handful of BitCoins. An attacker could never destroy them all. If deflation gets to the point where transactions of more than 10BC are unheard of, the client can just shift the decimal point over so that, for example, people with 0.01 BitCoins have 1.000 BitCents.&lt;br /&gt;
&lt;br /&gt;
===Generating tons of addresses===&lt;br /&gt;
Generating an address doesn&#039;t touch the network at all. You&#039;d only be wasting your CPU resources and disk space.&lt;br /&gt;
&lt;br /&gt;
===Rival/malicious client code===&lt;br /&gt;
Any rival client must follow BitCoin&#039;s rules or else all current BitCoin clients will ignore it. You&#039;d have to actually get people to &#039;&#039;use&#039;&#039; your client.&lt;br /&gt;
&lt;br /&gt;
===Everyone calculates at the same rate===&lt;br /&gt;
If everyone began with identical blocks and started their nonce at 1 and incremented, the fastest machine would always win. However, each block contains a new, random public key known only to you in the list of transactions.  The 256-bit &amp;quot;Merkle tree&amp;quot; hash of this is part of the block header.&lt;br /&gt;
&lt;br /&gt;
So everyone begins with slightly different blocks and everyone truly has a random chance of winning (modified by CPU power).&lt;br /&gt;
&lt;br /&gt;
===Generate &amp;quot;valid&amp;quot; blocks with a lower difficulty than normal===&lt;br /&gt;
Using unmodified Bitcoin code, an attacker could segment himself from the main network and generate a long block chain with a lower difficulty than the real network. These blocks would be totally valid for his network. However, it would be impossible to combine the two networks (and the &amp;quot;false&amp;quot; chain would be destroyed in the process).&lt;br /&gt;
&lt;br /&gt;
* Even though your network&#039;s difficulty can be less than the real difficulty, this doesn&#039;t give you any advantage over the real network. You&#039;ll gain ground when the real network is taking more than 10 minutes to generate a block, but you&#039;ll lose ground when the network takes less than 10 minutes.&lt;br /&gt;
* Every few releases of Bitcoin, a recent block hash is hardcoded into the source code. Any blocks before that point can&#039;t be changed. An attacker starting at that point would have to reduce the difficulty, but this would require him to generate blocks at a much slower rate than once per 10 minutes. By the time he finally gets to a difficulty of 1, a new version of Bitcoin with an updated hardcoded block will probably have been released.&lt;br /&gt;
* &amp;quot;Block chain length&amp;quot; is calculated from the combined difficulty of all the blocks, not just the number of blocks in the chain. The one that represents the most CPU usage will win.&lt;br /&gt;
&lt;br /&gt;
{{fromold|weaknesses}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>Bgeron</name></author>
	</entry>
</feed>