Real-World Crypto Payments | Zachary Kilgore - Ampera Foundation
Ethereum Denver·Wed, Oct 9, 2024, 12:00 AM
SDK overview for enabling crypto payments from consumer wallets (online and in-store) APPLICATIONS FOR ETHDenver 2024: #YearOfTheSpork ARE OPEN APPLY NOW https://ethdenver.com/apply
Transcript
[Music] hello and welcome thank you guys for coming my name is Zachary Kilgore and I'm going to talk about precursors to integrating real world crypto payments I am technical lead at the empera foundation for those of you who don't know the foundation has led the creation of the empera digital ass asset spending movement as well as has created the upcoming Anvil protocol a defi primitive for collateral and collateralization use cases a little about me I've been working in crypto for six years but this is my first time at eth Denver so I'm excited to be here and be part of this community previously I was the founding engineer at payment the payments company slide uh slide was then acquired by raise.com a gift card Marketplace that has processed billions of dollars in sales where I was an engineering lead after that I was the technical co-founder at flexa the largest pure digital payments Network and now I lead open- Source spending projects for the EMP Foundation this all means I've been working on some version of digital payments specifically for more than 10 years which is frankly shocking to me mind blown my goal in this space is and always has been to help and enable the spending of any asset on any app anywhere in the world to date Tech that I've worked on has enabled almost 100 ethereum assets to be spendable both in store and online at Merchants as varied as Chipotle Nordstrom Duncan and sheets my companies also went live powering the largest bank and payment provider for Bitcoin in Al Salvador we have a rapidly growing user base of hundreds of thousands of Spenders some of which you can see here from these experiences building digital asset Payment Systems it's clear to me that the biggest issue in the space is that we need a better crypto ux calling it the biggest issue we Face may sound hyperbolic but it's not user experience is the largest barrier to mainstream adoption of our technology both for consumers and Merchants pay with crypto can be a transformative the ability to pay with and unlock additional value and capability of any type of digital asset but ultimate ultimately it needs to be as simple safe and secure as the de facto payment methods the masses are used to like like quickly paying with cash or scanning and tapping to pay with over 1 billion Global users of Mobile payment apps like WeChat pay PTM and venmo the world is ripe for crypto payments to completely take over the system but not without achieving parody with these status quo payment Technologies the good news is we can it's motivating to see that we are currently pacing growth with the internet itself to win we will need continuous improvements in things like scale and legal Clarity of which I'm sure there are many experts here with us at eth Denver however we cannot afford to overlook the users's experience in order to solve the hard stuff you need to make the easy stuff easy to be clear there are indeed a lot of hard things that need solving in crypto like the afford mentioned scale and legal Clarity and these are hard in crypto payments too not to mention the 15 million different point of sale systems to integrate with Merchant e-commerce and Logistics platforms etc for payments though interruptibility is the most important thing just like any phone can call any other phone and any browser can access a website we need to ensure the same principle applies for crypto payments to start has anyone heard of CIP 2 or cip1 19 the chain agnostics standards lines Casa an open-source collaboration between organizations like metamask wallet connect Ledger among among others understood that with the development of new layer 2 Solutions like Roll-Ups and side chains and the growth of multi-chain systems multi-chain architecture is a first class citizen similar to the eips that we know and love cips are chain agnostic Improvement proposals cip2 was created to consistently and deterministically identify chains and CI c19 was created to do the same for assets why was this needed wallet clients want to and often support different blockchains otherwise users would need a different wallet to interact with every chain which may seem normal for those in this room but becomes untenable for the average user unfortunately there is no native way to un ially identify a given blockchain for instance because of their identical consensus mechanisms Bitcoin and Litecoin are identified by their Genesis block hashes using Genesis hashes to distinguish between Bitcoin and its Forks was codified in bip 122 for ethereum EIP 155 was proposed and implemented in response to the Dow fork in order to prevent replay attacks it was at this moment that a chain ID was introduced to differentiate evm compatible blockchains a concept widely adopted by chains such as optimism polygon and Avalanche among among others further complicating these matters in a non-m chain there is no protocol level mechanism for a Walt to know what asset is what for instance usdc is currently active on 15 different networks try explaining to your grandmother what version of usdc they are trying to spend with so the cip1 19 proposal building upon CIP 2 was created created to standardize asset identification into a machine readable human understandable deterministic and developer friendly format importantly cip1 19 handles both fungible and non-fungible assets this is the specification easy putting that together here's a real world example for how we would use the CIP c19 uh to identify a crypto Kitty's nft first we Define the ecosystem cryptokitties nfcs are on the ethereum blockchain identified by EIP 155 or EIP ident sorry identifier EIP 155 is used for all evm compatible blockchains we determine the chain ID in this case ethereum main nut one the asset name space for evm chains is the token standard and for NTS that's going to be ERC 721 the asset reference is the Smart contract address in this case and then finally we use the token ID because NF because cryptokitties are nfts and non-fungible tokens have an individual ID for erc20 is we don't we don't worry about that one Casa which governs governs cips encourages collaboration the proposals are flexible allowing communities for each chain to agree on identifiers that work within the Frameworks and proposed changes this helps new chains more easily adopt the methodology and avoid situations like the one seen here having a universal deterministic and generally applicable standard to identify something as basic as the assets involved in a transaction is table Stakes for Mass adoption of crypto payments now that we have a way to talk about chains and assets how do we earn ensure our wallet clients can function with our apps well in the olden days there was one only one browser wallet and it used a thing called window ethereum and it was okay then there were more wallets and more browsers extensions an EIP 1193 was created to to attempt to get them to all play nice with window ethereum EIP 1193 did some things right so people wrote Good docs for their browser wallets and they really did try but as I'm sure many dap developers here can attest it's a huge pain to figure out which key on window ethereum was used for which browser wallet using console log and frustrating the chicanery that could be done with a rogue set timeout the result was an unpredictable and crummy user experience and not a much better developer experience multiple wallets clobbering each other and a race to the bottom with users having to disable browser extensions to get the wallet they wanted to to connect I don't think Amazon was going to turn on its checkout page into a Dap under this kind of duress with more and more evm compatible wallets being released every day this was an untenable conflict that is until EIP 69 963 multi- injected provider Discovery was introduced what EIP 6963 does is Define a new channel of communication between apps and browser wallets that allows available wallets to be discoverable and for multiple wallets to coexist within the DAP all by using native JavaScript Concepts like event listeners and events this pattern eliminates the aforementioned conflicts will also enableing wallets to inject their own metadata such as wallet wallet name Logo UI and a reverse DNS entry this additional information now allows apps to automatically display the wallet's canonical name and logo in their UI bringing not just user choice but stability Clarity and predictability across contexts the implementation is simple here we see a wallet in this case in this context known as the provider the wallet announces itself via the global window event bus and listens for additional request for its EIP P 6963 provider info and here is the implementation for adapt we emit an event to request provider info listen for providers to announce themselves and build up our collection of available wallets ultimately these ideas affect all wallets all daps and most importantly all of our users these are just a couple of the easy things that we can do in the name of interoperability that make our user experiences and our developer experiences that much better the adoption of crypto depends on cooperation between different parties and standards are important building block up for this cooperation as developers you have the power to make this happen if we want to do the hard stuff let's first make the easy stuff easy that's it thank you [Applause]
Automatic transcript — names and jargon may be misspelled.