Hi > The main benefit is that you don't need "standard" to solve problem, but > use natural tools in given environment and programming stack. Build a > "standard" on top of URI protocol is a huge limitation, which does not > give any advantage. Standards can help an ecosystem to grow, can help to sustain a good user experience. The hardware wallet vendors have used "natural tools" and look where we are. We have *native* plugins in Electrum, Copay, etc. for different hardware wallets. Mostly the plugins are in the code base of the wallet, which makes it – in theory – impossible to change from the perspective of the hardware wallet vendor (there is no control of the deployment if there are bugs in the plugins code). The plugins functions overlap significant. I think this is a bad design for security critical applications. What I want as hardware wallet user: * I'd like to have a trusted application (layer) where I'm sure I'm using software provided through my hardware wallet vendor. What I want as hardware wallet vendor: * I'd like to be able to provide and update a software layer (app) to my customer with the ability to provide code signatures and security updates anytime. I do want to control the user experience. > We already see issues with dead simple "bitcoin uri" standard, it barely > works in most of bitcoin apps. Think of vague definitions of parameters > or ability to send payment requests over it. HW API would be complicated > by an order of magnitude and I have serious concerns that it will be > helpful for anything. So why complicate things. As far as I know most bitcoin wallets do support the bitcoin:// URI scheme quite well. I agree that BIP70 is a mess (including the bitcoin:// additions). The proposed URI scheme would be completely different. The only similarity is using the URI scheme as transport layer (which is the proposed long term inter-app communication layer by Apple and Google). >> How would the library approach work on mobile platforms? Would USB be > the only supported hardware communication layer? > > Interprocess communication/libraries/dependencies on Android are not > bound to specific transport anyhow. Such library could be used by any > android app, and the library would implement proper transports for > various supported vendors. USB for Trezor, NFC for something different > etc. If the point is "make life of app developers easier", let's do this > and do not define artifical "standards". So you propose having one library that would support multiple vendors? What if new vendors add a new transport layer (lets assume NFC or Bluetooth), wouldn't that result in every possible consumer of that library (all wallets) need to update before the new vendors transport layer could be used, resulting in a huge deployment process probably require many month until it can be used? What if there is a critical security issue in the library? How would the deployment plan looks like? I really think we should remove the "hardware communication layer" from wallets and move it towards the hardware vendor app. What about iOS? Should we just leave that platform unsupported with hardware wallets?