Inside single quotes, nothing is expanded. So you need to get out of the single quotes. In any case, you'd want to double-quote your variable expansions unless you want split+glob to apply to them, so:
A=$(multichain-cli issue '{"name":'"$ASSET"',"open":true}' "$D")
# '''''''' """""" '''''''''''''
printf '%s\n' "$A"
(the '''', """"" to show which parts are single-quoted, which are double-quoted).
Most likely, you'd want the content of $ASSET to be within double quotes in the JSON code, so you'd need to include them (in the literal, that is within single quotes part):
A=$(multichain-cli issue '{"name":"'"$ASSET"'","open":true}' "$D")
# ''''''''' """""" ''''''''''''''
Don't confuse the double-quotes that are used for shell quoting (here to prevent split+glob upon the expansion of $ASSET) and the double-quotes that are passed verbatim to multichain-cli.
You may need to consider the cases where $ASSET contains double quotes itself or other characters (like backslash, newline or other control characters) that are special in the JSON syntax. For non-ASCII character, you'll also need to make sure they are are encoded in the way expected by multichain-cli.
Alternatively, you can use double-quote shell quoting for everything like @Bex showed, though that means you'd need to escape the "s (but also $, \ and `) with backslash in the text passed to multichain-cli (and avoid using the ancient `...` syntax for command substitution as it does additional processing with backslash).
multichain-cli? Is$Da text file? We can't help you if you don't explain what you are trying to do.multichain-cliis not not really relevant.'{"name":$ASSET,"open":true}'cshas an interpreter. All sorts of things could be going wrong and we try to avoid guessing games as much as possible.