A computer-implemented method for decentralized and scalable trust among a plurality of decentralized applications, the method comprising: receiving, at a first decentralized application, a signature associated with a first public key, the signature being created by a trusted root application; receiving, at the first decentralized application, data representing one or more permissions of the first decentralized application specified by the trusted root application and signed by the trusted root application, wherein the data representing one or more permissions of the first decentralized application specified by the trusted root application are a subset of permissions of the trusted root application, wherein the one or more permissions of the first decentralized application specified by the trusted root application define one or more access rights of the first decentralized application; signing, at the first decentralized application, a second public key associated with a second decentralized application; signing, at the first decentralized application, data representing one or more permissions specified by the first decentralized application, wherein the data representing one or more permissions specified by the first decentralized application are a subset of the one or more permissions of the first decentralized application, wherein the one or more permissions specified by the first decentralized application define one or more access rights of the second decentralized application; and providing the signature associated with the second public key and the signed data representing one or more permissions specified by the first decentralized application, in order to thereby provide trust between the first decentralized application and the second decentralized application. receiving, at a first decentralized application, a signature associated with a first public key, the signature being created by a trusted root application; receiving, at the first decentralized application, data representing one or more permissions of the first decentralized application specified by the trusted root application and signed by the trusted root application, wherein the data representing one or more permissions of the first decentralized application specified by the trusted root application are a subset of permissions of the trusted root application, wherein the one or more permissions of the first decentralized application specified by the trusted root application define one or more access rights of the first decentralized application; signing, at the first decentralized application, a second public key associated with a second decentralized application; signing, at the first decentralized application, data representing one or more permissions specified by the first decentralized application, wherein the data representing one or more permissions specified by the first decentralized application are a subset of the one or more permissions of the first decentralized application, wherein the one or more permissions specified by the first decentralized application define one or more access rights of the second decentralized application; and providing the signature associated with the second public key and the signed data representing one or more permissions specified by the first decentralized application, in order to thereby provide trust between the first decentralized application and the second decentralized application.