Open ghost opened 4 years ago
I've went ahead and drew up some Blink options across some of the more popular blockchains, with several options of doing them.
Really impressive work, @AnthonyRonning! I haven't had a chance to read through all the way yet, but this is going to be super helpful to ensure that blinks can support common blockchains. Are you interested in being a co-editor on the Blink spec? You've clearly done the legwork to ensure that the reasoning for the spec is solid.
@msporny Yeah! Haven't been one before but I'm definitely willing to spend more time on this (ensure best practices for referencing a block/transaction, pull in more examples, etc. ). Is there a spec for blink currently out there?
No, but I can put one together quickly, will let you know when that's done. I expect by the end of next week for a first draft.
Hey @msporny, just wondering if there's been an update on this? Didn't see anything on it yet. If not, I'm willing to draft something up over the next day or two.
@msporny, I spent a little bit getting something drafted up since Blockcerts plans on using it. https://www.blockcerts.org/blockchain-links/
I'm a bit unsure of how to proceed from here and getting it in the right location if there's W3C interest in it. I may end up emailing the CCG for guidance, even if the CCG isn't the best place for Blockchain Links as a specification. It's the only W3C group I'm apart of.
Let me know if there's interest in using this as a draft moving forward. I put you as an author on it, I'm not sure who else is behind this concept, but let me know if I should edit/remove that. Thanks!
Hey @msporny, just wondering if there's been an update on this?
Hey, total fail on my part on getting this done. Thankfully you got it done! Hooray! :)
I took a look at it, looks good to me. Yes, the W3C CCG is probably the best place to introduce the work item since it probably has the largest population of blockchain folks at W3C.
There is also an argument for doing this at IETF... so we might transition it there in time. For the time being, we don't have to worry about that. Thanks a ton for putting the document together @AnthonyRonning -- you rock! :)
Sounds good @msporny! Yeah no worries about the timing, it's slipped on my priority as well. Thank you for the guidance! I'll get that emailed to the CCG today.
Separating this out into it's own ticket, regarding @msporny's comment here: https://github.com/w3c-dvcg/lds-merkle-proof-2019/issues/1#issuecomment-546074966
I've went ahead and drew up some Blink options across some of the more popular blockchains, with several options of doing them. I'm not sure if there's any other specific ones we'd like to see, let me know if there are. Most of what I've found were that they either follow a block/transaction model, only work with transactions, or had additional ways to reference the transaction (such as
EPOCH:SLOT:ID
for ADA). Indy did seem to be a bit of an exception with how they handle multiple "ledgers" (domain, pool, config) and reference a transaction (id, root hash, height).Efficiency is another thing to care about too, some blockchain node API's might have better ways to pull in a transaction. For instance, maybe some node API's don't have a way to pull in a block by height.
My personal opinion, I do lean towards
blink:<BLOCKCHAIN>:<SUBNETWORK><:OPTIONAL_BLOCK>:<TRANSACTION>
for the typical blockchain setup since we don't necessarily need a block to pull in a transaction via hash. It also allows for consistency for the DLT's that don't have the concept of a block anyways.Following these models for each one:
blink:<BLOCKCHAIN>:<SUBNETWORK>:<BLOCK>:<TRANSACTION>
blink:<BLOCKCHAIN>:<SUBNETWORK>:<TRANSACTION>:<BLOCK>
blink:<BLOCKCHAIN>:<SUBNETWORK><:OPTIONAL_BLOCK>:<TRANSACTION>
blink:<BLOCKCHAIN>:<SUBNETWORK>:<BLOCK_HEIGHT>:<TRANSACTION>
Bitcoin:
blink:bitcoin:mainnet:000000000000000000010382095b5308881ddf0902b59d0328a1401548383c5a:d7a008c9f9eab701132d394410f4e9d578790fb41848013fc5ba35951acdca24
blink:bitcoin:mainnet:d7a008c9f9eab701132d394410f4e9d578790fb41848013fc5ba35951acdca24
blink:bitcoin:mainnet:d7a008c9f9eab701132d394410f4e9d578790fb41848013fc5ba35951acdca24:000000000000000000010382095b5308881ddf0902b59d0328a1401548383c5a
blink:bitcoin:mainnet:605377:d7a008c9f9eab701132d394410f4e9d578790fb41848013fc5ba35951acdca24
blink:bitcoin:testnet:00000000000000e0acdd1b5f69bf16e2eed3083d33fb9c1155e6f7fae873a55a:5111bd0dc8b02d7959b2d353604ca898f4b295fc74da75659018f5433657216d
blink:bitcoin:testnet:5111bd0dc8b02d7959b2d353604ca898f4b295fc74da75659018f5433657216d
blink:bitcoin:testnet:5111bd0dc8b02d7959b2d353604ca898f4b295fc74da75659018f5433657216d:00000000000000e0acdd1b5f69bf16e2eed3083d33fb9c1155e6f7fae873a55a
blink:bitcoin:testnet:1609735:5111bd0dc8b02d7959b2d353604ca898f4b295fc74da75659018f5433657216d
Litecoin:
blink:litecoin:mainnet:9af3dfd994ff872b6d8228e8ba53d7df11a0c6412ab6fc9ed5257502d836510e:cdefc730489219bfbc24113aca6b26fbbe4aef7256394f8cbe62071cea67f810
blink:litecoin:mainnet:cdefc730489219bfbc24113aca6b26fbbe4aef7256394f8cbe62071cea67f810
blink:litecoin:mainnet:cdefc730489219bfbc24113aca6b26fbbe4aef7256394f8cbe62071cea67f810:9af3dfd994ff872b6d8228e8ba53d7df11a0c6412ab6fc9ed5257502d836510e
blink:litecoin:mainnet:1747616:cdefc730489219bfbc24113aca6b26fbbe4aef7256394f8cbe62071cea67f810
blink:litecoin:testnet:b4f62d2a6e8f5b8525e1dd671b30df842f7310f5a49a883d22f99ccbf6b68cb0:c8e971382e2ba21152637d5148f11daa4ad6c43fcd33dfb345b54aa24fe54e49
blink:litecoin:testnet:c8e971382e2ba21152637d5148f11daa4ad6c43fcd33dfb345b54aa24fe54e49
blink:litecoin:testnet:c8e971382e2ba21152637d5148f11daa4ad6c43fcd33dfb345b54aa24fe54e49:b4f62d2a6e8f5b8525e1dd671b30df842f7310f5a49a883d22f99ccbf6b68cb0
blink:litecoin:testnet:1270276:c8e971382e2ba21152637d5148f11daa4ad6c43fcd33dfb345b54aa24fe54e49
Ethereum:
blink:ethereum:mainnet:0xef918ed5dbe100d3cd2a7581fc406388711bf3ba4efc8af511b3a6cf8dafeaac:0x1038b6505a6cca372aa3d2f721e9b7b095bb236e45aafab221ed975168802d12
blink:ethereum:mainnet:0x1038b6505a6cca372aa3d2f721e9b7b095bb236e45aafab221ed975168802d12
blink:ethereum:mainnet:0x1038b6505a6cca372aa3d2f721e9b7b095bb236e45aafab221ed975168802d12:0xef918ed5dbe100d3cd2a7581fc406388711bf3ba4efc8af511b3a6cf8dafeaac
blink:ethereum:mainnet:8999838:0x1038b6505a6cca372aa3d2f721e9b7b095bb236e45aafab221ed975168802d12
blink:ethereum:ropsten:0xf37a8edc79f3f287bffd93d11db9887657438b7ff04cd6b21ec66b5110ba16a8:0xafdcf0708ab37df3eef706ea0c1b985a8fa10b11607fe1c0558022b51f450635
blink:ethereum:ropsten:0xafdcf0708ab37df3eef706ea0c1b985a8fa10b11607fe1c0558022b51f450635
blink:ethereum:ropsten:0xafdcf0708ab37df3eef706ea0c1b985a8fa10b11607fe1c0558022b51f450635:0xf37a8edc79f3f287bffd93d11db9887657438b7ff04cd6b21ec66b5110ba16a8
blink:ethereum:ropsten:6846475:0xafdcf0708ab37df3eef706ea0c1b985a8fa10b11607fe1c0558022b51f450635
EOS:
blink:eos:mainnet:058ca16036c058217753b01200118f3ed92bfb2cee9a6c75bdb7bb1d110a767e:0b7035b6f051eb753c5c67fe447c8eea0ea373bff3a084250b8cde2051424ef1
blink:eos:mainnet:0b7035b6f051eb753c5c67fe447c8eea0ea373bff3a084250b8cde2051424ef1
blink:eos:mainnet:0b7035b6f051eb753c5c67fe447c8eea0ea373bff3a084250b8cde2051424ef1:058ca16036c058217753b01200118f3ed92bfb2cee9a6c75bdb7bb1d110a767e
blink:eos:mainnet:93102432:0b7035b6f051eb753c5c67fe447c8eea0ea373bff3a084250b8cde2051424ef1
blink:eos:jungle:03c61efaba87a3307d65146a8a045b0e253a1faa1c6263b5019a2c4f6c42f5b9:3cf3e80855f703aca74f255689ad5ed398b16339343175a0c3fa81c4c0f0ffc1
blink:eos:jungle:3cf3e80855f703aca74f255689ad5ed398b16339343175a0c3fa81c4c0f0ffc1
blink:eos:jungle:3cf3e80855f703aca74f255689ad5ed398b16339343175a0c3fa81c4c0f0ffc1:03c61efaba87a3307d65146a8a045b0e253a1faa1c6263b5019a2c4f6c42f5b9
blink:eos:jungle:63315706:3cf3e80855f703aca74f255689ad5ed398b16339343175a0c3fa81c4c0f0ffc1
Stellar:
blink:stellar:mainnet:f6e219425e6769972a9c071077265ed3770cda023b4e5f1b449bfdedc7ebdfa1:7213b2953a6aa19ff75d766a4ac60e7cbcfe7eecb8a08f02b9c7981eb97a1fae
blink:stellar:mainnet:7213b2953a6aa19ff75d766a4ac60e7cbcfe7eecb8a08f02b9c7981eb97a1fae
blink:stellar:mainnet:7213b2953a6aa19ff75d766a4ac60e7cbcfe7eecb8a08f02b9c7981eb97a1fae:f6e219425e6769972a9c071077265ed3770cda023b4e5f1b449bfdedc7ebdfa1
blink:stellar:mainnet:27097307:7213b2953a6aa19ff75d766a4ac60e7cbcfe7eecb8a08f02b9c7981eb97a1fae
blink:stellar:testnet:64e76c05ef01c83b5df52ea10048472a4aba37d36070de6a0521e45a3200c9d4:d0c6f0bb1fd8ccd53c7c9c01f7ae063011074a7f89a1024630a7e14c64faeac1
blink:stellar:testnet:d0c6f0bb1fd8ccd53c7c9c01f7ae063011074a7f89a1024630a7e14c64faeac1
blink:stellar:testnet:d0c6f0bb1fd8ccd53c7c9c01f7ae063011074a7f89a1024630a7e14c64faeac1:64e76c05ef01c83b5df52ea10048472a4aba37d36070de6a0521e45a3200c9d4
blink:stellar:testnet:545411:d0c6f0bb1fd8ccd53c7c9c01f7ae063011074a7f89a1024630a7e14c64faeac1
Cardano: Note: Has a concept of epoch's and slots that can be used to reference a block of transactions.
blink:cardano:mainnet:777d28d3d8b559e73bfd52bac5bbb3444e23a5061c077f24d22a212b2bab26b6:a487f4f4d79fc5ad23da54f9eb778f52b8ab339750386d6e57300a0a392d23bc
blink:cardano:mainnet:a487f4f4d79fc5ad23da54f9eb778f52b8ab339750386d6e57300a0a392d23bc
blink:cardano:mainnet:a487f4f4d79fc5ad23da54f9eb778f52b8ab339750386d6e57300a0a392d23bc:777d28d3d8b559e73bfd52bac5bbb3444e23a5061c077f24d22a212b2bab26b6
blink:cardano:mainnet:3454476:a487f4f4d79fc5ad23da54f9eb778f52b8ab339750386d6e57300a0a392d23bc
blink:cardano:mainnet:160:17:a487f4f4d79fc5ad23da54f9eb778f52b8ab339750386d6e57300a0a392d23bc
blink:cardano:byron:c7d4dba24432949ccd2f42972ecff27271488099bdeef0550c50b41455a0524c:3db177738c45fa5338dfab226cac8c29b6bac551ee66f33b9a1b7d514f620534
blink:cardano:byron:3db177738c45fa5338dfab226cac8c29b6bac551ee66f33b9a1b7d514f620534
blink:cardano:byron:3db177738c45fa5338dfab226cac8c29b6bac551ee66f33b9a1b7d514f620534:c7d4dba24432949ccd2f42972ecff27271488099bdeef0550c50b41455a0524c
blink:cardano:byron:568388:3db177738c45fa5338dfab226cac8c29b6bac551ee66f33b9a1b7d514f620534
blink:cardano:byron:26:7856:3db177738c45fa5338dfab226cac8c29b6bac551ee66f33b9a1b7d514f620534
IOTA: Note: Not a blockchain. DAG where transactions build upon each other.
blink:iota:mainnet:SCTFPZYUQDLUFLAVMVPMWJQUESH9AFTQWVFDQUKSCSVZCHRRRIWC99YUMYXEMLMB9YADNEGOLJWU99999
blink:iota:devnet:HHCVSGJKRHVHPHSWTSORX9UDXKKSBALGWTOWUAJAWKEKLUCRLW9S9VFYUHRASROOYFKKZGXNMT9IIQ999
XRP:
blink:xrp:mainnet:6DC3FD2179E7BB980B15E9FA4CF987419EABBDC3D946C6F4A71FBB639278C181:C2F5B568D2B623818830F1D3FFFB0BFF3A02F46BE1D7C3925920542F079DB677
blink:xrp:mainnet:C2F5B568D2B623818830F1D3FFFB0BFF3A02F46BE1D7C3925920542F079DB677
blink:xrp:mainnet:C2F5B568D2B623818830F1D3FFFB0BFF3A02F46BE1D7C3925920542F079DB677:6DC3FD2179E7BB980B15E9FA4CF987419EABBDC3D946C6F4A71FBB639278C181
blink:xrp:mainnet:51813296:C2F5B568D2B623818830F1D3FFFB0BFF3A02F46BE1D7C3925920542F079DB677
blink:xrp:testnet:C9FC6EEBD064989ED9D115BB6C1E9480CF0FA15F4C9D8B9F7A4E129904AEECFD12:74774459378D2524624FBF9456FA18880CA51CD4E2DABF82B75E37B9B803394A
blink:xrp:testnet:74774459378D2524624FBF9456FA18880CA51CD4E2DABF82B75E37B9B803394A
blink:xrp:testnet:74774459378D2524624FBF9456FA18880CA51CD4E2DABF82B75E37B9B803394A:C9FC6EEBD064989ED9D115BB6C1E9480CF0FA15F4C9D8B9F7A4E129904AEECFD12
blink:xrp:testnet:2589139:74774459378D2524624FBF9456FA18880CA51CD4E2DABF82B75E37B9B803394A
Indy: NOTE: TransactionId could have multiple
:
's of it's own based on transaction type (ex.EFMHM7uFSY1NwieV9bLMAa:1:b6bf7bc8d96f3ea9d132c83b3da8e7760e420138485657372db4d6a981d3fd9e
) NOTE: Not all 'transactions' have a TransactionId, but they all appear to have a roothash/height.blink:indy:mainnet:domain:e086c0b13a358b053b2ed650390f5f9ca1351a481a3ce691d5f52c581973ead1
blink:indy:mainnet:domain:D8fF9SJbWujcZo7JR7SH193Y8Txnhx4CX5HmVB7zSZ1J
blink:indy:mainnet:domain:53992
blink:indy:mainnet:pool:64KUHBRJtK6kWPFgZXcWA4P6jp13NwcbaN6pbmY6rzUv
blink:indy:mainnet:pool:95
blink:indy:mainnet:config:PJUvv3XtBmEi43sS7UWC8RtLitSY1ygdBBfLe44WDZh
blink:indy:mainnet:config:7810
blind:indy:stagingnet:domain:7f889442e2391d559898f3b5919a8fecaeec83a50dafc594ce41514dd2971935
blink:indy:stagingnet:domain:HcdDsSSfNnUYRnBf6fL9gYaHKvKSseybrjs2xqsUx8UF
blink:indy:stagingnet:domain:79713
blink:indy:stagingnet:pool:JC2dMSRnRKmDLHoD6HdsJ5LZNgP4iMrjUz2SRtP5KYiD
blink:indy:stagingnet:pool:141
blink:indy:stagingnet:config:5X1Xp2TXVPv5hk2sJYKKhT2z6j2UDcSnjn6kG2wbQTkH
blink:indy:stagingnet:config:25149
Fabric: NOTE: couldn't find good examples online but it does appear that fabric follows the block:transaction model like most. Main thing that would different between this and a blink example like bitcoin would be the blockchain:network since it's a private blockchain. More than likely up to organizations to define the blink for themselves.