Project Decorum - Crowdsale (Ended)

What do we need for a erc-20 transition.
A burn address so that the funds cannot be used again on the old blockchain.
Proof that the owner of a bitcoin address is the same than that of the ethereum address.

A valid burn address is an address whereof no private keys are known.
If we convert a ethereum address or the hash thereof to base 58 add a 1 in front remove excess characters and add a checks.
Then i think we satisfied all requirement.

Possible method
Step 1 Bob enters his ethereum address in the burn address generator.

Step 2 Bob sends his omni-tokens to the burn address.

Step 3 Bob communicates his ethereum address to Alice.

Step 4 Alice enters the received ethereum address in the burn address generator.

Step 5 Alice checks the omni-token balance and confirmations of the burn address.

Step 6 Alice transfers erc-20 tokens to the ethereum address.

All Alice steps can be automated.
Alice has to be careful to not grant the same tokens twice to the ethereum address.
Omni tokens can be send directly from exchange so no double btc transaction fees.

2 Likes

My main worry is that the server hosting this could be hacked, after which the burn address could be changed to an address of the attacker. A single address could be confirmed through other sources (like this forum), and a cryptographic signature to authorize the ETH address can’t be faked.

The issue is that this needs to run for a very long time, preferably until SAFE and PDC are ready for launch. That gives hackers a lot of time to poke.

7 Likes

Cloudflare won’t make your server hacker-proof. That’s a pretty ridiculous claim. It will provide you with DDoS protection and some application firewalling, but if your webserver config (or plugins, or code, or whatever) is not secure your site will be vulnerable to attacks. But yes, in some extend Cloudflare can block a few of those attacks, but you can’t depend on it of course.

4 Likes

The issue is about fully automatising it. Even with the IP hidden behind Cloudflare, the server processing the requests will be vulnerable. Automatisation requires some logic. Of course, the logic should be fairly simple, but it’s no security guarantee.

Thinking out loud: Ideally there would be a cryptographic relation (possible?) between the OMNI burn address and the ERC-20 address. Alice has an ERC-20 address (call it E) she likes the new coins on. The OMNI burn address, O, might be calculated from E. Alice transacts her PDC to the calculated O, and lets Bob know of address E. Bob can independently calculate O too, and verify whether a transaction is done to that burn address, then sends the equivalent new coins to E.

I have actually little knowledge about whether above is feasible or possible at all.

It would also be nessecary to ensure the burn address is not somehow owned by Alice, hence a one-way calculation (e.g. hash) between E and O.

4 Likes

Hi @Seneca maybe you want to look into app.bancor.network, you’ll need their token bnt to get listed. Disclaimer I own 0.87 bnt :stuck_out_tongue_winking_eye:

I think unfortunately this is not possible, Storj transitioned also :frowning:
https://docs.storj.io/discuss/594bbdcd97f2b0000f74961b

The only time that I saw an automation, was when Shapeshift.io allowed people to buy their token in exchange for every token on Shapeshift.

:stuck_out_tongue:

2 Likes

I think I meant something different with automatising. If I’m reading correctly STORJ automatised the transitioning process using their conversion application. Meaning without manual intervention from their side.

1 Like

What I like about this method is that the code for it can be run locally, which makes it easier to provide multiple copies through different sources for those who want to double check they generated a legit burn address.

1 Like

Losing Bittrex without having a backup plan is a pretty epic fail by Seneca. I’m glad I saw the signs and sold a while back. RIP!

1 Like

it ain’t over until the fat lady sings :wink:

4 Likes

Not his fault Bitrex delisted, didn’t seem likely.

Getting listed there in the first place was great. Many projects with larger icos do not accomplish that.

Not much value there for another exchange to list this Omni coin when it was on bittrex, for obv reasons.

Only thing that matters and what @seneca will be judged on is if investors ultimately profits, what he delivers and how it evolves. Not what exchange is or is not trading the coin pre-alpha.

10 Likes

To be fair, he’s likely actually building the product, and hopefully not too concerned about speculation prices for some bittrex trading ‘dudes’

11 Likes

How about try listing PDC on LYKKE.
I heard on Telegram that LYKKE team are working with Omni Team to list Agoras (AGRS)

1 Like

@seneca any news on the relisting or transition to an erc-20 token? :slight_smile:

1 Like

I’m fleshing this out at the moment.

11 Likes

I would like to see your ICO that you created and how well it’s doing now.
Please provide us some links to your success.

2 Likes

Just seen these chaps on the Kaiser report;

Similar to what PDC are building?

3 Likes

Maybe the Decorum protocol opens the door to the option (enhanced options) of minds.com having a safe network version of it’s website?

3 Likes

The Decorum team will be attending DevCon AFAIK, excited to see if they have anything special!

12 Likes

After consideration of many different designs to transition PDC from Omni to ERC20, we now have a plan that we think provides the best security and is still reasonably user friendly. Concerning security our main goals were to not use any public-facing centralized server/database and to be completely transparent. We’ve already started implementation of this plan but would appreciate feedback from you before we launch.

Proposed usage

  • Use an ERC20 compatible Ethereum wallet (for example myetherwallet.com) to generate or import an existing ETH address
  • Copy this ETH address into a small tool/app we provide, which gives you a burn address for the PDC
  • Send your PDC to this burn address (using omniwallet.org or Omni Core)
  • Wait until we have detected and processed your burn action (probably at a fixed hour, daily) after which you can send a claim transaction to the provided Ethereum contract address to receive your new tokens

Technical details

To derive a burn address from an ETH address, where in Bitcoin usually the RIPEMD-160 hash of the SHA256 of the public key would be taken, we now simply use the Ethereum address. You can even do this manually on this webpage at step 3 (remove the 0x prefix from your Eth address): TP's Go Bitcoin Tests

In Javascript it looks something like this:

var bitcore = require("bitcore-lib")

// Target ERC20 address
var eth_address_str = '0xb794f5ea0ba39494ce839613fffba74279579268'
var eth_address_buf = Buffer.from(eth_address_str.replace('0x', ''), 'hex')

// Burn address
var btc_address_adr = bitcore.Address.fromPublicKeyHash(eth_address_buf)

btc_address_adr.toString()

We will use (Python) software to monitor the Bitcoin blockchain for any OMNI-PDC transactions. It can derive the ETH address from the receiving address by simply decoding the Base58 and removing the checksum bytes.

We will deploy an Ethereum smart contract to issue the new ERC20-PDC tokens. This smart contract will contain the derived Ethereum addresses and the ERC20-PDC “credit” those addresses are allowed to claim. The contract allows us to add address/credit pairs using a special address, which we will do when we detect new OMNI-PDC transactions.

While it would’ve been simpler to instantly send the ERC20-PDC to the derived Ethereum address, we cannot distinguish between a regular OMNI-PDC transaction and a transaction to a burn address. By requiring users to claim the ERC20-PDC through interaction with the smart contract we are sure the OMNI-PDC have been effectively burned. If we didn’t do this, we’d risk creating more than the current 50 million tokens that would be issued to addresses that can never be spend. It would inaccurately inflate the total supply and thus the market cap of ERC20-PDC, which would reflect badly on this project.

Because of the contract the system can’t be gamed. If you’d want to claim ERC20-PDC while you actually sent the OMNI-PDC to a bitcoin address that you own, you’re faced with the challenge of treating the RIPEMD-160 of the SHA256 of your bitcoin pubkey as an Eth address and figuring out what private key matches that Eth address. In other words, you’d have to break ECDSA and brute-force 160 bits of entropy with Keccak-256 hashing algorithm. That would also allow you to rob from any ETH address.

To figure out the private key from a burn address, you’d have to break or brute-force RIPEMD-160, SHA256, and ECDSA. If you can do this, you can rob any Bitcoin address and much more.


Conclusion

All of the relevant data in this process will be permanently stored in either the Bitcoin blockchain or the Ethereum blockchain. This means everything can be monitored and checked by anyone at anytime, which is how we believe a (temporarily) trusted party should behave in this ecosystem. While no system is 100% secure, we think the odds are high we can do this without serious incidents on our side. We aim to provide easy to understand guides and timely support to participants to hopefully prevent any mistakes on their side.

As mentioned earlier, feedback and questions are welcome!

14 Likes

I’m not so much of a programmer myself, so the technical details I cannot fully judge. But I do have a few questions, @Seneca. Rather easy ones I guess lol!

  1. The claim transaction is to be send from myetherwallet or from the small tool/app you provide, in which the burn address was created?
  2. What timeframe did you have in mind to support this conversion? PDC has been traded quite heavily in the meantime as you might know (up to $2M daily volume even!) and I presume the number of PDC holders has grown substantially after the crowdsale. How long can people claim their ERC20-PDC? How are these people being reached out to?
  3. What will happen to the unclaimed ERC20-PDC? People that forgot or otherwise don’t care so much to convert, will then the new token proceed with 50M minus unclaimed number?

Just a few things that crossed my mind. Thanks!

5 Likes