Published on: 2013-08-13T05:26:50+00:00
In an email thread dated August 10, 2013, Mike Hearn mentioned that Chrome apps/extensions can establish raw TCP socket connections using the API introduced by Google in November 2012. He provided a link to the blog where this API is explained. The W3C has also proposed a Raw Sockets specification that includes TCP sockets. Firefox OS has an API under discussion that could be part of this standardization effort. This suggests that a standardized approach for establishing raw TCP socket connections may emerge in the future.In an email conversation on August 9, 2013, Wendell expressed his excitement over a demo application called "wally". However, Jeff Garzik clarified that the application is just a command line client to prove a technology. The main development is taking place in platforms like "node-libcoin" where a wallet platform is being developed. BitPay is committed to the blockchain engine side of bitcoind while also catering to the enterprise wallet needs which do not necessarily align with standard bitcoind wallet. The future use of bitcoin in large enterprises requires advanced features such as multi-sig, P2SH etc. Managers, CEOs, and other functionaries at corporations may have their own wallets/keyrings and cooperate to sign large value, high security bitcoin multi-sig transactions.In a discussion thread, Jeff Garzik mentioned that BitPay is working on a wallet using node.js JavaScript called wally. Wendell from GrabHive asked how BitPay is going to put this wallet to use. Wendell asked about whether an SPV wallet could be built entirely in JavaScript and how it could be safely distributed for use. Jeff Garzik replied that BitPay was working on a similar project called wally using node.js JavaScript instead of browser JavaScript. The software is open source and available on GitHub.Packaged app pages always load locally, providing independence from the network. Once installed, users have full control over the app's lifecycle and can quickly open, close or fully uninstall them. These apps are launched and maintained from within Chrome itself, making them more similar to native apps. Technical stuff could be made to work within the context of the limited API, thereby making it an interesting and user-friendly way to distribute Bitcoin wallets. Additionally, Chrome apps/extensions can make raw TCP socket connections. Packaged apps provide support for USB access which HTML5 may not support anytime soon.Chrome apps and extensions can make raw TCP socket connections using the TCP Listen API, although they are not standard APIs. HTML5 is unlikely to support USB access anytime soon, but packaged Chrome apps do. Packaged apps have their own windows, run offline, and are more similar to native apps. Code that runs inside NativeClient has the same access level as JavaScript, but it is a way to do things faster. Chrome for mobile does not do apps at the moment, and users are still limited by the APIs Chrome exposes. Wendell suggests using special browser features and bundling them in an app platform like Chrome. Mike Hearn believes that this approach uses Chrome as the app platform instead of a JVM, which assumes that more users have Chrome than a JVM. However, users who do not have Chrome would probably hesitate to install an entire browser to run a wallet app. Hearn also believes that using JavaScript outside the browser results in less safety, performance, features, and mature tools compared to languages/platforms designed for it.NativeClient code has the same access level as JavaScript and can be used to execute things faster. Chrome app distribution via the Chrome store is a viable option, but it has its pros and cons. The APIs Chrome exposes are a strict subset of what a real OS provides, limiting what users can do with the app. Wendell suggests using special browser features to bundle the wallet in Chrome, but Mike Hearn says that a web app cannot make raw TCP socket connections due to restrictions. However, browser-specific things like extensions or installable apps can give code greater access permissions, essentially using Chrome as an app platform instead of a JVM. But, this means that users would need to install an entire browser to run the wallet app, which could deter some. Mike does not find this design compelling because JavaScript is less safe, performs worse, has fewer features, and lacks mature tools compared to other languages/platforms.The conversation is about creating a wallet application that would be usable on the web. While it's possible to use JavaScript for this purpose, building a wallet in a web app presents challenges because web apps aren't allowed to make raw TCP socket connections. One potential solution is using browser-specific features like extensions or "installable apps" to give code greater access permissions. Chrome has a "Native Client" plug-in that could be used for an SPV implementation, but this goes off-topic from the original subject.
Updated on: 2023-08-01T05:35:31.687089+00:00