Bitcoin may be able to incorporate a simple credit system using only a couple of new messages.
1. Announce Credit.
Each Bitcoin client generates a private credit key for signing IOUs, and a public key for accepting credit. A credit announcement might look like this:
{
key MyPublicKey
key YourPublicKey
uint64_t Amount
}
Signed by MyPrivateKey
This would replace all previous credit announcements between MyPublicKey and YourPublicKey. It would be broadcast in the same way as transactions, and included in blocks (you could attach a fee to a credit announcement as an incentive to miners).
2. Use Credit
When you want to use some credit you find a path through the announcements you have collected, and build a credit transaction.
{
var_int Length
key MyPublicKey
key ChainPublicKey1
key ChainPublicKey2
...
key ChainPublicKeyN
uint64_t Amount
}
Signed by MyPrivateKey
When a use credit is found in a block, the announcement table is walked to ensure that enough credit exists along the chain and that the keys match. Again, a fee is attached to use some credit as an incentive to include these items in a block.