A cryptographic voting method including: obtaining a ballot established on a distributed ledger, the ballot designating answers with corresponding answer identifiers; receiving, a voter token, the voter token conferring a voter vote-value to a voter, the voter token received through recording a transaction on the distributed ledger, and the transaction addressed to a voter identifier of the voter; determining a first committed vote-value to assign to a target answer of the answers, the first committed vote-value including at least a portion of the voter vote-value; generating a first committed token, the first committed token containing a cryptographic commitment to the first committed vote-value to bind the voter to the first committed vote-value without revealing the first committed vote-value while in a cryptographic form; requesting a first transaction on the distributed ledger, the first transaction transferring the first committed token to the corresponding answer identifier of the target answer; determining a second committed vote-value to assign to a second answer of the answers, the second committed vote-value is a null vote-value; generating a second committed token containing a cryptographic commitment to the second committed vote-value to bind the voter to the second committed vote-value without revealing the second committed vote-value while in the cryptographic form; and requesting a second transaction on the distributed ledger, the second transaction transferring the second committed token to the corresponding answer identifier of the second answer; the method specifically including: determining a vote-value distribution to assign to the answers, the vote-value distribution distributing a voter vote-value received within the voter token; generating a committed token for each of the answers, the committed tokens containing a cryptographic commitment to a respective committed vote-value to bind the voter to the vote-value distribution without revealing individual committed vote-values within individual committed tokens of the committed tokens while the committed tokens are in a cryptographic form, and at least one of the committed tokens being a null vote-value; and requesting a transaction on the blockchain transferring the committed tokens to the answers, where transferring at least one of the committed tokens being a null vote-value obfuscates the vote-value distribution. obtaining a ballot established on a distributed ledger, the ballot designating answers with corresponding answer identifiers; receiving, a voter token, the voter token conferring a voter vote-value to a voter, the voter token received through recording a transaction on the distributed ledger, and the transaction addressed to a voter identifier of the voter; determining a first committed vote-value to assign to a target answer of the answers, the first committed vote-value including at least a portion of the voter vote-value; generating a first committed token, the first committed token containing a cryptographic commitment to the first committed vote-value to bind the voter to the first committed vote-value without revealing the first committed vote-value while in a cryptographic form; requesting a first transaction on the distributed ledger, the first transaction transferring the first committed token to the corresponding answer identifier of the target answer; determining a second committed vote-value to assign to a second answer of the answers, the second committed vote-value is a null vote-value; generating a second committed token containing a cryptographic commitment to the second committed vote-value to bind the voter to the second committed vote-value without revealing the second committed vote-value while in the cryptographic form; and requesting a second transaction on the distributed ledger, the second transaction transferring the second committed token to the corresponding answer identifier of the second answer; determining a vote-value distribution to assign to the answers, the vote-value distribution distributing a voter vote-value received within the voter token; generating a committed token for each of the answers, the committed tokens containing a cryptographic commitment to a respective committed vote-value to bind the voter to the vote-value distribution without revealing individual committed vote-values within individual committed tokens of the committed tokens while the committed tokens are in a cryptographic form, and at least one of the committed tokens being a null vote-value; and requesting a transaction on the blockchain transferring the committed tokens to the answers, where transferring at least one of the committed tokens being a null vote-value obfuscates the vote-value distribution.