A method for anonymously communicating data that defines a token from a source system to a destination system via a block-chain distributed database , the method comprising: receiving, at a token distribution system , request information from a source system , wherein the request information specifies source identifying information and an address for receiving one or more tokens; determining, by the token distribution system , whether a user associated with the request is registered with the token distribution system and, if so, a number of tokens to allocate to the user; if the user is determined to be registered with the token distribution system , determining, by the token distribution system , one or more tokens for allocation to the source system based in part on the number of tokens to allocate to the user; communicating, by the token distribution system via the block-chain distributed database , the allocated one or more tokens to the address defined in the request information via a zero-knowledge transaction; moving, by the source system , the one or more tokens to a different address, the different address corresponding to an address for communicating a block-chain transaction; communicating, by the source system , the tokens at the different address to a destination address associated with the destination system via a block-chain transaction; communicating, by the destination system , received tokens to a token aggregation system via a block-chain transaction, wherein the token aggregation system receives tokens from a plurality of different destination systems ; and generating a report that indicates a number of tokens received by each destination system . receiving, at a token distribution system , request information from a source system , wherein the request information specifies source identifying information and an address for receiving one or more tokens; determining, by the token distribution system , whether a user associated with the request is registered with the token distribution system and, if so, a number of tokens to allocate to the user; if the user is determined to be registered with the token distribution system , determining, by the token distribution system , one or more tokens for allocation to the source system based in part on the number of tokens to allocate to the user; communicating, by the token distribution system via the block-chain distributed database , the allocated one or more tokens to the address defined in the request information via a zero-knowledge transaction; moving, by the source system , the one or more tokens to a different address, the different address corresponding to an address for communicating a block-chain transaction; communicating, by the source system , the tokens at the different address to a destination address associated with the destination system via a block-chain transaction; communicating, by the destination system , received tokens to a token aggregation system via a block-chain transaction, wherein the token aggregation system receives tokens from a plurality of different destination systems ; and generating a report that indicates a number of tokens received by each destination system . <EOS>