Giter Site home page Giter Site logo

audiusproject / audius-protocol Goto Github PK

View Code? Open in Web Editor NEW
545.0 28.0 106.0 508.17 MB

The Audius Protocol - Freedom to share, monetize, and listen to any audio content.

Home Page: https://docs.audius.org

License: Other

Dockerfile 0.06% Shell 0.44% JavaScript 10.48% Python 15.10% HTML 0.52% Solidity 1.58% Rust 2.29% Lua 0.07% TypeScript 52.33% Mustache 0.30% Go 2.77% PLpgSQL 10.87% CSS 3.06% Makefile 0.01% Procfile 0.01% Ruby 0.07% Java 0.01% Objective-C 0.03% C 0.01% Objective-C++ 0.01%
audio blockchain ethereum hacktoberfest music solana protocol streaming

audius-protocol's People

Contributors

alecsavvy avatar amendelsohn avatar cheran-senthil avatar csjiang avatar dejayjd avatar dharit-tan avatar dmanjunath avatar dylanjeffers avatar endline avatar hareeshnagaraj avatar isaacsolo avatar joaquincasares avatar jonaylor89 avatar jowlee avatar kyle-shanks avatar michellebrier avatar milindnshah avatar nicoback2 avatar phelpsdb avatar piazzatron avatar raymondjacobson avatar rickyrombo avatar sabrina-kiam avatar schottra avatar sddioulde avatar sidsethi avatar sliptype avatar stereosteve avatar theoilie avatar vicky-g avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

audius-protocol's Issues

Typescript Support

Would be helpful if you guys added a types definitions file so that typescript users can use this library. Cheers!

uploading content with API

Moin!
how do we upload content with the api?
How about other function which require a login?
I just saw teh OAUTH docs.
I haven't found anything in the docs regarding this.
Cheers Marc

Playback freezes when internet connectivity is lost

Unable to confirm if this behavior is repeatable, but I was using the android app in a coffee shop with spotty WiFi and the playback froze on me after what I assume was a temporary loss of connection. Trying to skip to the next track on skipped to the end of that one. Just curious if there is a test for this, or if it's on the app end.

Enjoying the app so far though!

xf filter in get_karma prone to exploit / affecting trending results

Affected Service:

Discovery Provider

Issue Description

The xf filter in get_karma appears to act as tool to combat trending score manipulation.
However, it is currently implemented in a manner where it fails to accomplish this.

The goal appears to be to filter out users without pfp/cover imgs & bios (high likelihood spam accounts).
However, it is looking at the wrong attributes in the Users table to accomplish this.

When the discovery nodes index the chains, the content multihashes are written to cover_photo_sizes and profile_picture_sizes,
and their cover_photo and profile_picture counterparts are set to null.

Source:
discovery-provider/src/tasks/users.py#L374

if user_record.profile_picture:

# Any write to profile_picture field is replaced by profile_picture_sizes
if user_record.profile_picture:
    logger.info(
        f"index.py | users.py | Processing user profile_picture {user_record.profile_picture}"
    )
    user_record.profile_picture_sizes = user_record.profile_picture
    user_record.profile_picture = None

# All incoming cover photos intended to be a directory
# Any write to cover_photo field is replaced by cover_photo_sizes
if user_record.cover_photo:
    logger.info(
        f"index.py | users.py | Processing user cover photo {user_record.cover_photo}"
    )
    user_record.cover_photo_sizes = user_record.cover_photo
    user_record.cover_photo = None
return user_record

As a result, when the xf filter is True (as it is in all three trending categories), the end result of the query will yield a null result.
Following, the final results of the get_karma function will be Null and will not be applied to the rest of the scoring algorithm.

if xf:
    saves_and_reposts = (
        session.query(
            saves_and_reposts.c.user_id.label("user_id"),
            saves_and_reposts.c.item_id.label("item_id"),
        )
        .select_from(saves_and_reposts)
        .join(User, saves_and_reposts.c.user_id == User.user_id)
        .filter(
            User.cover_photo != None,  # <---- ALWAYS None
            User.profile_picture != None,  # <-- ALWAYS None
            User.bio != None,
        )
    ).subquery()

Consequences:

  1. Trending results are prone to quickly made sock puppets accounts inflating stats to achieve higher ranks.
  2. Underground trending results filled with aged tracks from the main trending.
    Their decayed scores still end up ousting underground trending tracks because there's no karma multiplier to bolster underground track stats.

Remediation

An easy fix can be implemented by changing the xf query's filter logic to look at the correct table attributes

# discovery-provider/src/queries/query_helpers.py   
...
#L826   User.cover_photo_sizes != None,
#L827   User.profile_picture_sizes != None,

Additionally, the alembic migration creating the materialized view trending_params can be updated in the same manner as well:

Zero search results

The search API seems broken.
A GET to https://discoveryprovider.audius4.prod-us-west-2.staked.cloud/v1/tracks/search?query=baauer%20b2b&app_name=EXAMPLEAPP, or any other query, leads to 1 result where everything is null.

Desktop App doesn't connect.

Downloaded the desktop app but it never connects. Every time I start it, I get the spinning triangle logo for a few seconds then a "Whoops... Something has gone wrong" page. Press the 'Take Me Back' button ends up in an endless loop of the two screens. The only message if I run in a terminal is:

Checking for update
Update for version 0.16.6 is not available (latest version: 0.16.6, downgrade is disallowed).
Checking for update
Update for version 0.16.6 is not available (latest version: 0.16.6, downgrade is disallowed).

Yes, twice on startup and twice every time I click the 'Take Me Back' button. Nowhere is there any indication of what the 'Something' is that went wrong. I've tried with and without my VPN active, and I have no firewall settings that would interfere.

Edit: Sorry, I forgot to mention I'm running on Linux.

Operating System: KDE neon 5.20
KDE Plasma Version: 5.20.2
KDE Frameworks Version: 5.75.0
Qt Version: 5.15.0
Kernel Version: 5.4.0-52-generic
OS Type: 64-bit
Processors: 16 × AMD Ryzen 7 3800X 8-Core Processor
Memory: 15.6 GiB of RAM
Graphics Processor: AMD Radeon RX 5600 XT

[FR] Ability to change Account Email

Good day Audius Devs and Staff. I would like to request an option to change an Account Email.

The reason why I am making this request is, my account is registered under an email that I deleted due to scam emails I have been receiving. It would make my life so much easier if I am able to change my account email.

Provide permalink to tracks, users and playlists in the API

Currently, the API only returns the IDs of these resources. In third-party apps, we would have a better user experience by adding a button to open the original track on the Audius web app.

A guide on formatting the URLs with the data given by the API would work too.

Process is not defined

Hi, i'm using the Audius (client side) sdk for my portfolio. Unfortunately, since the last release, i got this error : Uncaught ReferenceError: process is not defined. In browser, there no process variable attach to window. I suppose this error is coming from the bundler. Hope, it will help.

However, thanks for your work guys !!!

Volume Web App UI

Whenever you close and open up the browser again and hit Play Button, the volume will blast off at 100% no matter if it was set at any other percent. Issue is solved as you tweak the volume bar back to the actual displayed amount in the UI. Otherwise it'll remain at 100% even if the UI displays another value.

Using:

  • Brave Browser Versión 1.16.68 Chromium: 86.0.4240.111 (Build oficial) (x86_64).
  • macOS High Sierra 10.13.6.

image

A reminder to send developer rewards out

There are so many features that could be provided and/or implemented by the developer community but we are treated as a last priority.

I hope Audius doesn't pay its employees as late as it does rewards.

ipfs ports not accessible to creator node instance started by docker-compose in local dev setup

I am trying to run a creator node local development instance for some experimental project and have been facing a few problems, the first being with getting the creator-node to access the ipfs container.

https://github.com/AudiusProject/audius-protocol/wiki/Service-Provider-Quickstart mentions that to start a creator-node you need to have an IPFS node running. ./libs/scripts/ipfs.sh up <container name> starts the IPFS containers with the following ports forwarding:
8080-8081/tcp, 127.0.0.1:6002->4001/tcp, 127.0.0.1:6001->5001/tcp

The next step, according to the wiki, is to start the creator node container through docker-compose for local development. But since the network isn't shared between the creator node container and the ipfs container, I get a ECONNREFUSED error in the initIPFS() step.

There are 2 ways to solve this (I've tried both and they work to the extent that the creator node can now log the IPFS Peer IDs):

  1. Include an service named ipfs in creator-node/docker-compose/docker-compose.full.yml. In this case the ipfsHost environment specified in development.env file should be set as ipfs which is basically the service name being started by docker-compose. Also the creator-node service will then depend on ipfs too. Following diff shows the changes to the docker-compose.full.yml file that might be required:
diff --git a/creator-node/docker-compose/docker-compose.full.yml b/creator-node/docker-compose/docker-compose.full.yml
index 2ac8f3b..b9f1e2c 100644
--- a/creator-node/docker-compose/docker-compose.full.yml
+++ b/creator-node/docker-compose/docker-compose.full.yml
@@ -1,5 +1,10 @@
 version: '3'
 services:
+  ipfs:
+    image: ipfs/go-ipfs:release
+    ports:
+      - '6001:5001'
+      - '6002:4001'
   db:
     image: postgres:11.1
     environment:
@@ -15,6 +20,7 @@ services:
     env_file:
       - ./development.env
     depends_on:
+      - ipfs
       - db
       - redis
     ports:
  1. Add a --network=<network-name> flag to the docker run command in libs/scripts/ipfs.sh. The network name should be same as that used by the creator node container. For example, network name should be specified as audius-creator-node_default. In this case as we can see that the creator node container is using that same network.
$ docker network ls
NETWORK ID          NAME                          DRIVER              SCOPE
7804e34aa829        audius-creator-node_default   bridge              local

Both these solutions don't seem to be ideal since we might want to run a discovery provider container for example along with a creator node, thus requiring two different ipfs containers using two different networks?

Also solution 2 is even less ideal as we are hardcoding the network name as the network being used by the creator-node container. This can be solved by having one more argument passed to the ipfs.sh script to take the required network name.

If there is no better way to resolve this, and either solution is acceptable, I could quickly send a pull request. Also if I'm missing something obvious, please let me know.

Cleanup .circleci/config.yaml

There are a lot of redundant jobs that make the current config hard to read.

Also, there are additional quirks such as mad-dog tests not being run on a hotfix branch.

Convert `creator-node/src/services/SessionExpirationQueue.js` to Typescript

The session expiration queue is responsible for deleting expired sessions for the content node.

Currently, the file is pure vanilla javascript

The desired state would be to have this be typescript including:

  • proper types for the SessionExpirationQueue class
  • import syntax for imports instead of everything being required
  • exporting using the export syntax rather than modules.exports

An important note, don't worry about importing config.js or models.js since, for now, those still need to be in vanilla javascript

This file is only ~130 lines of code so it should be a relatively easy lift

Search in audius

Hey there! I wonder how does search work within Audius? We are building an open-source, decentralized search protocol on web 3 (currently on ipfs is integrated) and I came across Audius.
Just wondering if our API's could be made of any use for Audius

API and how connect it to .Net

Hello, I recently started to deal with your API, and I had a questions.

Is it possible to connect your service to my own application (in my case it's WPF). I want to send login and password from my app, and get some response that will allow me to take all user info(Playlists, favorite tracks ...)?

All I have now is id, what i get from this https://discoveryprovider.audius4.prod-us-west-2.staked.cloud/v1/users/search?query=Brownies&app_name=EXAMPLEAPP, and basic user info from https://discoveryprovider.audius4.prod-us-west-2.staked.cloud/v1/users/nlGNe?app_name=EXAMPLEAPP.

Maybe there is some documentation, excluding https://audiusproject.github.io/api-docs/#audius-api-docs, where i can find more info abut API and how it use with .Net platform.

Thanks!

API: release_date missing from new tracks

I use the /v1/users//tracks endpoint to retrieve track info. Tracks created since late October no longer include a release_date field. (in fact they include no timestamp info at all).

Tracks created prior to this continue to include their release_date.

Is this intentional?

Error: Cannot find module 'babel-register'

I'm running npm run truffle-migrate inside the contracts directory. But I'm getting:

Error: Cannot find module 'babel-register'
Require stack:
- /Users/prikshetsharma/Desktop/audius-protocol-master/contracts/truffle-config.js
- /Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/original-require/index.js
- /Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/cli.bundled.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
    at Function.Module._load (internal/modules/cjs/loader.js:725:27)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/truffle-config.js:8:1)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at Object.require (internal/modules/cjs/helpers.js:88:18)
    at Function.load (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/packages/config/dist/index.js:145:1)
    at Function.detect (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/packages/config/dist/index.js:134:1)
    at Object.run (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/packages/core/lib/commands/compile.js:53:1)
    at Command.run (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/packages/core/lib/command.js:136:1)
    at Object.<anonymous> (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/packages/core/cli.js:52:1)
    at __webpack_require__ (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/webpack/bootstrap d3abaec0ba5c4953076d:19:1)
    at /Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/webpack/bootstrap d3abaec0ba5c4953076d:65:1
    at Object.<anonymous> (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/cli.bundled.js:71:10)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)

How to fix this?

How to register creator and discovery node

Hi,

I followed the wiki to host both a creator node and a discovery provider.

I'm now trying to find out what I need to do this register those node and be part of the network.
I've try getting answer from discord, I emailed [email protected] but I can't get answers anywhere so far.

The wiki seem to indicate I must have some AUDIUS to be able to access the button that allows to register nodes on the audis dashboard. What is the exact process please?

Error: Failed health check - solana-validator-predeployed

when I follow https://github.com/AudiusProject/audius-protocol/tree/master/service-commands I come cross a error "Error: Failed health check - solana-validator-predeployed"
When I step into the Bringing up all services step , I Knock down node setup.js up command below, it show me error below, how to solve it thank you.

[root@iZ8vbb9gww22ktbg2khqjrZ scripts]# node setup.js up
Config dir: /root/.audius
/root/.audius/config.json
/root/.audius/eth-config.json
Bringing up services...
See /home/www/audius-protocol-master/service-commands/output.log and /home/www/audius-protocol-master/service-commands/error.log for troubleshooting.
network  - up
network  - up | executed in 0.17s
solana-validator-predeployed  - up
Waiting 3 seconds...
solana-validator-predeployed  - up | executed in 4.179s
solana-validator-predeployed  - health-check-retry
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
(node:1483905) UnhandledPromiseRejectionWarning: Error: Failed health check - solana-validator-predeployed
    at performHealthCheckWithRetry (/home/www/audius-protocol-master/service-commands/src/setup.js:320:9)
    at async runSetupCommand (/home/www/audius-protocol-master/service-commands/src/setup.js:216:5)
    at async runInSequence (/home/www/audius-protocol-master/service-commands/src/setup.js:374:5)
    at async allUp (/home/www/audius-protocol-master/service-commands/src/setup.js:790:3)
    at async Command.<anonymous> (/home/www/audius-protocol-master/service-commands/scripts/setup.js:110:5)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:1483905) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 21)
(node:1483905) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Discovery node return tracks as downloadable while streaming url returns 403

In this issue I will use https://discoveryprovider.audius.co as the endpoint.

Expected Behavior:

https://discoveryprovider.audius.co/v1/tracks/VQb0N should be returning downloadable: false because it is deleted.

Current Behavior:

https://discoveryprovider.audius.co/v1/tracks/VQb0N returns downloadable: true
while https://discoveryprovider.audius.co/v1/tracks/VQb0N/stream redirects to https://creatornode2.audius.co/tracks/stream/VQb0N which returns a 403 code because the CID is blacklisted (likely because it is marked as deleted)

I am pretty sure this is unwanted behavior, because I have in the past encountered deleted tracks and they were marked as downloadable: false

hexstrings created that aren't padded but then used as byte32

couple examples as I'm trying to deploy to forked mainnet

in 3_goverance_migration.js

there is

const governanceRegKey = web3.utils.utf8ToHex('Governance');

and similarly in 4_token_migration.js

const tokenRegKey = web3.utils.utf8ToHex('Token')

but then these get past to registerContract which uses the signature addContract(bytes32,address)

but this fails because utf8ToHex only does that, it doesn't create a byte32 value, that is , something 32 bytes wide, aka doesn't pad appropriately

here is self contained example:

const ethers = require('ethers');
const web3 = require('web3-utils');

const abi = new ethers.utils.AbiCoder();

abi.encode(
  ['bytes32', 'address'],
  [
    ethers.utils.formatBytes32String('Goverance'),
    '0x901C0Bd5f6bB72ac93A2339D730c182d7Dc91fFE',
  ]
);

abi.encode(
  ['bytes32', 'address'],
  [web3.utf8ToHex('Governance'), '0x901C0Bd5f6bB72ac93A2339D730c182d7Dc91fFE']
);

the second one will explode

so either change migration files to use formatBytes32String or change signature of addContract to use bytes instead of bytes32

I can open PR for the former since anyway I'm changing these things to make the migrations work

Convert `creator-node/src/services/sync/syncQueue.js` to Typescript

The sync queue is what processes requests to synchronize data between content nodes.

Currently, the file is pure vanilla javascript

The desired state would be to have this be typescript including:

  • proper types for the SyncQueue class
  • import syntax for imports instead of everything being required
  • exporting using the export syntax rather than modules.exports

This file is only ~150 lines of code so it should be a relatively easy lift

Onboarding through another blockchain

We have artists on our Concordium blockchain (https://www.concordium.com/) who appreciate the privacy and security features of our public, permissionless, PoS blockchain. Is it possible to onboard new users to the Audius platform using a bi-directional bridge and use Concordium as a portal?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.