BlockchainTransaction (for bloxberg)
BlockchainTransaction[assoc]
連想 assoc 内の構成要素から構築されたbloxbergブロックチェーンのトランザクションを表す.
詳細
- bloxbergブロックチェーンのトランザクションの記号表現を与える.トランザクションは送信せず,トランザクションに署名もしない.
- BlockchainTransaction[…][prop]は,トランザクションの特性 prop の値を与える.
- 次の要素を与えなくてはならない.
-
"TransactionCount" アカウントに関連付けられたトランザクション数 "GasPrice" 単位あたりのガス価格(単位:berg) - さらに,"GasLimit"要素を与えることができる.デフォルトで,これは内部で計算される.
-
"GasLimit" 実行するためのガスの最大量 - 送金の際は,次の要素が必要である.
-
"Address" 送金先アドレス "Amount" 送金するbergの金額 - 契約を配備する際は,次の要素が必要である.
-
"Contract" トランザクションで配備する契約 - プレーンなSolidityコードを使うときの契約は, "Contract""code"におけるように,コードを含む文字列でなければならない.
- プレーンなSolidityコードを複数の契約で使うときは,連想<|"SourceCode""code","Main""name"|>におけるように"Contract"が指定されていなければならない.ここで,"Main"は配備される契約の名前である.
- Solidityコードを含むファイルを提供するときの契約は,"Contract"->File[…]におけるようにFileでなければならない.
- 複数の契約を含むSolidityコードを含むファイルを提供するときは,"Contract"を連想<|"Source"File[…],"Main""name"|>として指定しなければならない."Main"は配備される契約名である.
- Solidityコードを含む複数のファイルを供給するときは,"Contract"を連想<|"Source"{file1,file2,…},"Main""name"|>として指定しなければならない.ここで,{file1,file2,…}は file1がコンパイルされるFile式のリストで,"Main"は配備される契約名である.
- コンパイルされたSolidityコードを使うときは,"Contract"が<|"ByteCode""hexstring","ABI""spec"|>の形式の連想として指定されなければならない."ABI"はApplication Binary Interfaceである.
- また,"Contract"についての連想を与えるときは,追加的な"Parameters"特性を与えて配備する契約の初期化パラメータを定義することができる.
- 契約を呼び出すときは,次の要素が必要である.
-
"Address" 契約のアドレス "FunctionCall" 契約で行う関数呼出し - "FunctionCall"要素は,AssociationまたはTypedの式でよい.
- "FunctionCall"がTypedの式のときは,これが関数名を定義しなければならない.
- "FunctionCall"がAssociationの式のときは,次の特性が必要である.
-
"Function" 呼び出す関数を定義するTypedの式 - "FunctionCall"の連想には,次の追加的特性も与えることができる.
-
"Inputs" 呼び出す関数の入力パラメータ "Sender" 契約を呼び出している送信者のアドレス - 次の追加的な特性もBlockchainTransactionオブジェクトから要求することができる.
-
"Signed" トランザクションにデジタル署名がされたかどうか "MessageHash" 署名されていないトランザクションのハッシュ "RawTransaction" 直列化されたトランザクション "TransactionID" トランザクションID - BlockchainTransactionは,bloxbergのトランザクションを表すことができる.このネットワークの指定には,必要とされる連想あるいはBlockchainBaseオプションの中で"BlockchainBase"の値を使う.
例題
すべて開く すべて閉じる例 (2)
bergを送金するbloxbergトランザクションオブジェクトを作る:
BlockchainTransaction[<|"TransactionCount" -> 58,
"GasPrice" -> Quantity[0, "bergs"], "Address" -> "2cdFffD8B15BDa30b4573B1b22Dce2d23ac86D26",
"BlockchainBase" -> "Bloxberg"|>]bloxbergトランザクションオブジェクトを作り,ガス価格の上限を指定する:
BlockchainTransaction[<|"TransactionCount" -> 58,
"GasPrice" -> Quantity[0, "bergs"], "GasLimit" -> 21000,
"Address" -> "2cdFffD8B15BDa30b4573B1b22Dce2d23ac86D26",
"Amount" -> Quantity[1, "Gbrox"],
"BlockchainBase" -> "Bloxberg"|>]スコープ (5)
プレーンテキストのSolidity契約 (2)
ブロックチェーントランザクションでプレーンなSolidityコードを使って契約を構築する:
solidityCode = "pragma solidity ^0.4.23;
contract Test{
function sum(uint256 a, uint256 b) public pure returns (uint256)
{
return a+b;
}
}
";BlockchainTransaction[<|"TransactionCount" -> 58,
"GasPrice" -> Quantity[0, "bergs"],
"Contract" -> solidityCode,
"BlockchainBase" -> "Bloxberg"|>]プレーンなSolidityコードを使って複数の契約定義で契約を構築する:
solidityCode = "pragma solidity ^0.4.23;
contract Test2{
function sum(uint256 a, uint256 b) public pure returns (uint256){
return a+b;
}
}
contract Test is Test2{
function main(uint256 a,uint256 b) public pure returns (uint256){
return sum(a,b);
}
}";BlockchainTransaction[<|"TransactionCount" -> 59,
"GasPrice" -> Quantity[0, "bergs"],
"Contract" -> <|"SourceCode" -> solidityCode, "Main" -> "Test"|>,
"BlockchainBase" -> "Bloxberg"|>]Solidity契約ファイル (1)
Import[File["ExampleData/sample.sol"]]BlockchainTransaction[<|"BlockchainBase" -> "Bloxberg", "TransactionCount" -> 60, "Contract" -> File["ExampleData/sample.sol"], "GasPrice" -> Quantity[0, "bergs"]|>]Solidityファイルで複数の契約定義を使って契約を構築する:
Import[File["ExampleData/sample2.sol"]]BlockchainTransaction[<|"BlockchainBase" -> "Bloxberg", "TransactionCount" -> 61, "Contract" -> <|"Source" -> File["ExampleData/sample2.sol"], "Main" -> "Test"|>, "GasPrice" -> Quantity[0, "bergs"]|>]Import[File["ExampleData/sample3.sol"]]Import[File["ExampleData/sample4.sol"]]BlockchainTransaction[<|"BlockchainBase" -> "Bloxberg", "TransactionCount" -> 61, "Contract" -> <|"Source" -> {File["ExampleData/sample4.sol"], File["ExampleData/sample3.sol"]}, "Main" -> "Test4"|>, "GasPrice" -> Quantity[0, "bergs"]|>]コンパイルされたSolidity契約 (1)
コンパイルされたコードとそのアプリケーションバイナリインターフェースを使って契約を構築する:
bytecode = "608060405234801561001057600080fd5b506040516104503803806104508339810180604052810190808051820192919060200180518201929190602001805190602001909291905050508260009080519060200190610060929190610087565b508160019080519060200190610077929190610087565b508060028190555050505061012c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100c857805160ff19168380011785556100f6565b828001600101855582156100f6579182015b828111156100f55782518255916020019190600101906100da565b5b5090506101039190610107565b5090565b61012991905b8082111561012557600081600090555060010161010d565b5090565b90565b6103158061013b6000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063047fc9aa1461005c57806306fdde031461008757806354fd4d5014610117575b600080fd5b34801561006857600080fd5b506100716101a7565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b5061009c6101ad565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100dc5780820151818401526020810190506100c1565b50505050905090810190601f1680156101095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561012357600080fd5b5061012c61024b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016c578082015181840152602081019050610151565b50505050905090810190601f1680156101995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60025481565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102435780601f1061021857610100808354040283529160200191610243565b820191906000526020600020905b81548152906001019060200180831161022657829003601f168201915b505050505081565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102e15780601f106102b6576101008083540402835291602001916102e1565b820191906000526020600020905b8154815290600101906020018083116102c457829003601f168201915b5050505050815600a165627a7a72305820116f53a6040b598029b8580eb96cf331f11fc8a7ba722618dfd5dd8df8601f9e0029";abi = "[{\"constant\":true,\"inputs\":[],\"name\":\"supply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_version\",\"type\":\"string\"},{\"name\":\"_supply\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]";BlockchainTransaction[<|"BlockchainBase" -> "Bloxberg", "TransactionCount" -> 62, "Contract" -> <|"ABI" -> abi, "ByteCode" -> bytecode, "Parameters" -> {"hello", "world", 10005}|>, "GasPrice" -> Quantity[0, "bergs"]|>]一般的な契約呼出し (1)
配備された契約中の状態変数の値を更新するトランザクションを作る:
contractAddress = "D3201000dDa9de4f04F53B50DcfEc9Af3FBA25a7";BlockchainTransaction[<|"BlockchainBase" -> "Bloxberg", "TransactionCount" -> 65, "Address" -> contractAddress, "FunctionCall" -> <|"Function" -> Typed["setResult", {"string"} -> {}], "Inputs" -> "ONE"|>, "GasPrice" -> Quantity[0, "bergs"]|>]オプション (1)
アプリケーション (1)
bloxberg BlockchainTransactionを作る:
bloxbergTX = BlockchainTransaction[<|"BlockchainBase" -> "Bloxberg", "TransactionCount" -> 1, "Address" -> "2cdFffD8B15BDa30b4573B1b22Dce2d23ac86D26", "Amount" -> Quantity[1, "Gbrox"], "GasPrice" -> Quantity[0, "bergs"]|>]bloxbergTXSigned = BlockchainTransactionSign[bloxbergTX, PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{27112075690151519677987005437167591271987576467999908152870704903750742697008,
35340190558986655200725209493311762384517889396024615752 ... 00,
"Compressed" -> False, "PublicByteArray" ->
ByteArray[
"BDvw5BsUAEh0WY7CgBHAK7sPRruT/rr3xpRgF8gws+QwTiHWyeDrK7K9R5em/dkrhBgnuVzVxgAu9FWlEguegoo="],
"PrivateByteArray" -> ByteArray["v9Uxg5+nffM+nupc+AIqiN1/qBisfHUlPZsiJpZYauw="]]]]署名したトランザクションをbloxbergブロックチェーンに送信する:
bloxbergTXSubmitted = BlockchainTransactionSubmit[bloxbergTXSigned]"TransactionID"を使ってトランザクションを確かめる:
bloxbergTXSubmitted["TransactionID"]txdata = BlockchainTransactionData[bloxbergTXSubmitted["TransactionID"], BlockchainBase -> "Bloxberg"]//Dataset関連するガイド
履歴
2020 で導入 (12.1)
テキスト
Wolfram Research (2020), BlockchainTransaction, Wolfram言語関数, https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-bloxberg.html.
CMS
Wolfram Language. 2020. "BlockchainTransaction." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-bloxberg.html.
APA
Wolfram Language. (2020). BlockchainTransaction. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-bloxberg.html
BibTeX
@misc{reference.wolfram_2026_blockchaintransaction, author="Wolfram Research", title="{BlockchainTransaction}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-bloxberg.html}", note=[Accessed: 14-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_blockchaintransaction, organization={Wolfram Research}, title={BlockchainTransaction}, year={2020}, url={https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-bloxberg.html}, note=[Accessed: 14-August-2026]}