roneil
Joined 15 years ago
Joined 15 years ago
Audius is a decentralized, community-owned, and artist-controlled music-sharing protocol. Audius provides a blockchain-based alternative to SoundCloud to help artists monetize their work and distribute it directly to fans. The company building Audius has been backed by General Catalyst, KPCB, Lightspeed, and Pantera. And we launched last week! For more about the project, see audius.co and audius.org
We are seeking backend engineers to help architect and build the Audius protocol. You are a collaborative, team player that enjoys working on small teams and solving big problems. You are open to experimenting to come up with novel innovative solutions, have the tenacity and drive to solve problems, and don’t give up easily.
Key Responsibilities * Design, architect and build the Audius protocol * Develop the set of services that run on the decentralized Audius ecosystem
Skills and Experience * 3+ years of software engineering experience * At least 1 year of experience building web services using Python, Go, or NodeJS * Experience building distributed systems on platforms such as Docker or Kubernetes * Great interpersonal and communication skills within a small team
Bonus Points * Experience working with a start-up * Previous experience with Blockchain * Interest in music
If interested, email us! [email protected]
This is why we recommend that you audit all 3rd-party Javascript in your app for accesses to localstorage, and avoid sourcing 3rd-party javascript from uncontrolled origins (the code could be switched out from under you if it is not baked into your application)
The post message model is an interesting one - we looked into designing Hedgehog in that way, but decided it ultimately did not help solve this issue and created unnecessary complexity. If you include Javascript from libraries or other origins on your page, eg. Google Analytics, that Javascript could still post-message into your iframe.
Perhaps we are wrong here though! Is FinneyFor open-source? Would love to see how this is implemented.
Good luck!
There are tons of helpful resources online though, as lots of folks write tutorials and other things. Googling most problems you face will yield good results.
We did not want to require use of Keybase to use our dapp Audius, though I could see it making a lot of sense to offer a keybase integration as a potential option.
FWIW, Audius still supports Metamask too - web3 is all about giving users choice from our perspective.
In the case of a compromised password the entire wallet should be abandoned.
The approach we've taken at Audius on initial funding is to avoid funding the wallet entirely - we use EIP-712 signatures combined with a trustless transaction relay service that pays gas / submits EIP-712 signed transactions on-chain on behalf of users. In this way, the user wallet never holds any tokens but is still used to secure access to their account. We'll be open-sourcing our contracts and infrastructure code soon, but here's a good public example of this model in action: https://github.com/hellobloom/core/tree/master/contracts
That said, other folks may decide to use Hedgehog differently - perhaps you integrate with something like Wyre (https://www.sendwyre.com/) to help users fund their wallet client-side without knowing that crypto is there.
Here's the key section of code that makes this Ethereum-specific: https://github.com/AudiusProject/hedgehog/blob/master/src/au...
You could replace the use of 'ethereumjs-wallet/hdkey' with any other chain wallet library if it is compatible with the BIP-39 style HDWallet structure. Bitcoin and many other blockchains have compatible libraries that could be substituted easily!
This was documented only indirectly - we should add a specific note / example for this. The model here is that the ethereumjs-wallet object returned by Hedgehog (eg. by getWallet https://audiusproject.github.io/hedgehog-docs/#getwallet ) follows this API https://github.com/ethereumjs/ethereumjs-wallet which, when used in tandem with this package https://github.com/ethereumjs/ethereumjs-tx can do everything a normal Ethereum wallet would.
We are also thinking about offline ways to share the key such that the centralized side is not required - eg. a QR code displayed on one device and scanned by another to propagate the wallet. This creates a problem if a user loses all of their devices though.