Skip to content

Latest commit

 

History

History
893 lines (669 loc) · 95.5 KB

CHANGELOG.md

File metadata and controls

893 lines (669 loc) · 95.5 KB

v9.0.0 (2021-06-15)

Bug Fixes

  • define items field to fix generation error (2c42678)
  • define items field to fix generation error (c688250)
  • revert serialisation to string of compiler models (bfbb64a)
  • remove incompatible definitions (1f4d7b9)
  • remove incompatible definitions (fd9ff9b)
  • don't fail on getting nonce for new account (8ef7545)
  • don't panic on Invalid tx (06b545a)
  • big-int: add missed ContextValidate method (31b0075)
  • node-error: revert removed String method (90ae4b4)
  • node-error: revert removed String method (2ed984c)
  • node-error: revert removed String method (ae6f6df)

Chore

  • regenerate changelog (d416701)
  • remove unused bytecode (25e16bf)
  • setup changelog generator (113e1a4)
  • bump version to 9 (2464486)
  • remove extra dependencies using go mod tidy (03de926)
  • enable Iris protocol (26f720c)
  • update compiler api to 6.0.0 (1fa699c)
  • manually fix generic_tx.go according to readme (62fb47d)
  • run generic_tx_json_fix.py (b09ee44)
  • regenerate node api (e4e5daf)
  • manually fix generic_tx.go according to readme (bfc7047)
  • update node api to 6.0.0 (e7984a9)
  • run generic_tx_json_fix.py (580ce75)
  • regenerate node api (ae79858)
  • update node api to 5.11.0 (9af9723)
  • fix linter errors manually (2257666)
  • manually fix generic_tx.go according to readme (01126e1)
  • run generic_tx_json_fix.py (e4fa90f)
  • regenerate node api using latest go-swagger (4cdc679)
  • process node.js (9cae02a)
  • update api readme (037ddbd)
  • regenerate compiler api (9624325)
  • update compiler api to 4.3.2 (2ca70fb)
  • reformat compiler api with jq (3150369)
  • regenerate compiler api using latest go-swagger (f6713eb)
  • switch to a not deprecated linter package (4e223f8)
  • simplify node configuration (315f5ae)
  • run tests at GitHub Actions (bbce116)
  • changelog: rename sections and add links (0aa5091)

Ci

Code Refactoring

  • drop old nodes support and compiler switch (f8ab7a5)
  • fix linter errors manually (52a8066)
  • fix linter errors manually (f78ad17)
  • simplify Makefile (daef543)
  • remove Jenkins-related report package (815a94f)
  • update go version (e548512)
  • update dependencies (5e71e07)
  • depend on organisation fork of rlp for aeternity (8f661f0)
  • update node URLs (a2648aa)

Docs

Test

  • fix oracle (0ff2f08)
  • generate random name to don't cleanup node each run (078f642)
  • fix GA (951b02e)
  • update bob address because of lack of private key (2967e12)
  • don't connect to incompatible public testnet (d56bb06)

v8.0.0 (2020-01-07)

Bug Fixes

  • DefaultOracleListener never returns an error (35d42a8)
  • aens_test.go uses the TxReceipt's features (8cc0af8)
  • node.Infoer functionality moved to Context.NodeInfo() (97453a4)
  • avoid naet.NodeInterface whenever possible when writing functions that use naet.Node. Each function that uses the node should specify explicitly its methods that it uses from naet.Node, perhaps by defining its own interface locally. (245f5e3)
  • alternate way of getting a bytes version of Uint64 using binary.BigEndian.PutUint64() (e403a29)

Chore

  • bump version to 8 (42123be)
  • fix linter complaints (c459dc6)
  • comments and exported CompileEncoder interface from aeternity (dd4e371)
  • .env v5.2.0 (9cc1a20)
  • rename INTEGRATION_TEST_SENDER_PRIVATE_KEY to AETERNITY_ALICE_PRIVATE_KEY (07d4a51)

Code Refactoring

  • Context.SignBroadcast as well as SignBroadcastWait (6260ed9)
  • integrationtest NewContext no longer returns an err (12c2047)
  • NewContext doesn't need to return an error after all; TxReceipt.Tx should not be a pointer to an interface (1dbe992)
  • getTransactionByHashHeighter interface renamed to transactionWaiter (30e6487)
  • NewContext does not need to return error after all. ErrWaitTransaction type was too complicated for its usefulness (a6b5cb1)
  • remove unused WaitTransactionForXBlocks() (035fcb5)
  • use aeternity.SignBroadcast(), aeternity.WaitSynchronous() or ctx.SignBroadcastWait() throughout the codebase (74f46d9)
  • aeternity.WaitSynchronous() (13b8b55)
  • it is not yet time to remove broadcastWaitTransactionNodeCapabilities (e94898a)
  • introduced TxReceipt.Watch(), which replaces SignBroadcastWait. but not sure yet how to use it with existing code (d56cecb)
  • Oraclize can now Listen and Register if Oracle was not previously registered (f20236e)
  • make ChainPollInterval useful, 1s by default (04136e9)
  • Oracles uses Context, beginning refactor to mimic http.Listen/Parser/Handler (9367aeb)
  • naet.Node.Info() returns netowrkID and node version for use with HLL (6601570)
  • AENS uses Context (2fa3dbb)
  • Contracts uses Context (d7ea73a)
  • Context struct with ContextInterface (000f1ed)
  • SignBroadcastWaitTransaction returns a *TxReceipt (479607f)
  • introduce TxReceipt, Context. 2nd level functions are now methods of Context (b02675c)
  • Noncer now returns the current height in addition to the recommended TTL, so NewNameUpdateTx does not need separate ttler, noncer input arguments and does not have to call ttler twice. transactions.GenerateTTLNoncer renamed to NewTTLNoncer (e8aa318)
  • AENS higher level TestRegisterName uses Broadcaster; CreateContract returns ctID; CallContract introduced (6b8280f)
  • try to use Broadcaster struct in higher level interface (9cf81a8)
  • introducing Broadcaster{} struct, which is like Context{} but only handles broadcasting (0f3625c)

Docs

  • DESIGN.md explains the current state of the Go SDK (f878a75)
  • add comments for higher level interface constructs (157e24c)
  • comments for Context{} (f0a24e4)

Feature

  • beta DefaultCallResultListener. There's probably a better way to do this, but this seems to work. (7d31909)
  • Node now supports GetTransactionInfoByHash, required for contract call return values (116fa9d)
  • NamePointer generalized to allow for arbitrary pointer types, as well as account_pubkey, oracle_pubkey, contract_pubkey, channel types (6f62f04)
  • CreateOracle, ListenOracleQueries higher level convenience functions. New naet.Node capability required: GetOracleQueriesByPubkey (8b3d66d)

Features

  • OracleRegisterTx.ID(), OracleQueryTx.ID() methods (f55cd2d)

Tests

  • TestSignBroadcast, TestfindVMABIVersion (fd88f51)
  • TxReceipt.Watch unittest (21a82d4)
  • integration test for oraclize (c515139)

v7.0.1 (2019-11-25)

Bug Fixes

  • account sign not updated to use SerializeTx() (9217c01)
  • make ABIVersion==3 a const (0f45e0a)
  • docker-compose v1.24 changed behaviour to complain about duplicate mountpoints. Also expose apparently does not automatically publish ports to the host anymore (8df9761)

Chore

  • rename GetWalletPath() to CheckWalletExists() (ec08cb9)

Docs

  • HD wallet example, moved package aeternity example from context_test.go to helpers_test.go. README.md rewritten. Assume little to no knowledge of Go (assume blockchain knowledge). Make it easier for beginners to know where to look for which code examples. (5498789)

Features

  • updated fee calculation for FATE Contract Calls (d5c1b18)

Maintain

  • it works with node v5.0.2 (0563b58)

v7 (2019-11-06)

v7.0.0 (2019-11-06)

Bug Fixes

  • updated config.go QueryTTLValue, ResponseTTLValue changed Config Defaults Oracle Response unittest (a7cfbc5)
  • some New*Tx arguments were left over (0d4c9b1)
  • Default OracleTTLValue introduced; Oracles have a ABIVersion, not a VMVersion (24b005e)
  • namesalt was accidentally used for namefee (2ee99ca)
  • go 1.13 changed package import behaviour, causing test flags to be parsed before they were declared golang/go#31859 In case anyone else lands here and is looking for a simple answer: (1e8cf5b)
  • SignBroadcastWaitTransaction and friends shoud take interface instead of *naet.Node (5848d92)
  • package aeternity accidentally imported v1 of aepp-sdk-go (25fec10)
  • update config values for Lima Default Compiler Backend is FATE (updated VMVersion/ABIVersion too) Default GasLimit is lowered (previously was larger than protocol's microblock gas limit of 6e6) (59d65fb)
  • package aeternity was wrongly importing aepp-sdk-go without a major version (b9fb5aa)

Chore

  • update aepp-sdk-go import paths to v7 (961a75b)
  • update go.mod, go.sum (5986f00)
  • integration test testdata is now FATE bytecode (501001e)
  • use SignBroadcastWaitTransaction in integration tests (20f2cdb)
  • feel comfortable about removing Default Config Tx RLP serialization unittest cases now (4458c06)
  • update go.mod (920a6b7)
  • update to compiler v4.0.0 (1e1d3c7)
  • private testnet node should upgrade to Lima consensus ASAP (6918690)
  • WaitForTransactionForXBlocks could really use a config parameter that has a suggested waiting time in blocks (ae20c6a)

Code Refactoring

  • restrict HD wallet functionality to only deriving aeternity addresses (6f37c3b)
  • Transaction interface now includes the TransactionFeeCalculable methods (4575526)
  • Transaction fee calculation reworked to accomodate the different gas calculation equation for Oracle*Txs (1875246)
  • cmd uses TTLer/Noncer (2e3924f)
  • integration tests use TTLer/Noncer method (87f5777)
  • CreateTTLer, CreateNoncer, GenerateTTLNoncer, CreateTTLNoncer (5f06729)
  • GA transactions follow new closure system (8dadb77)
  • removal of Context struct (e0801a9)
  • Contract*Tx constructors now do the work previously done by Context (529a6a0)
  • Oracle*Tx constructors now do the work of Context (f549966)
  • SpendTx, AENS transaction constructors now do a lot of hard work previously done by Context move GetTTL/GetNextNonce to package transactions (40f5481)

Docs

  • comments for NameID, ErrWaitTransaction (a4d7386)

Feature

  • AEX-10 HD Wallet and mnemonic support (df76365)
  • WaitTransactionForXBlocks and its derivatives now return a ErrWaitTransaction struct which helps callers distinguish between network errors and transaction acceptance errors (6b4725b)
  • integration tests for higher level (c9ee7fb)
  • higher level AENS supports NameFee (d7bf5fd)
  • update AENS integration tests for Lima HF (8d9962d)
  • Lima HF NameClaimTx update and NameID calculation changes (be88be8)
  • AENS auction config params (b51ebb3)
  • test with node v5.0.0-rc.5 (bc13ca2)
  • new name hashing scheme after Lima HF (237cb40)
  • RegisterName(), CreateContract() (f6a1ed2)

Features

  • improve vanity account generation experience (51440e8)

v6.0.0 (2019-10-10)

Bug Fixes

  • ExampleGetTransactionType test was failing when run as part of the unittest suite, but working properly when run individually. This is because TransactionTypes map was being modified somewhere. Instead of investigating what changed it (non-obvious), I simply wrapped TransactionTypes map in a function to provide the const map behaviour originally intended. (a7fdfae)
  • compiler_test.go was not using config package (35d0eae)
  • ensure all import paths have aepp-sdk-go/v5 (23bf23a)
  • account's testdata/ folder was not moved with it into account/ (8f9a4f0)

Chore

  • import paths to aepp-sdk-go/v6 (bd8ba2a)
  • there is no need to test the output of CompileContract, just that it finished without error (71a5ba5)
  • goimports moved aeternity import in ga_test.go (373bdd0)
  • update golden file for simplestorage_bytecode.txt compiler v4.0.0-rc4 (143f004)
  • functionality required of api/updatedict.py has changed since last editing node v3's swagger.json file (e851cfc)
  • aeternity.VerifySignedTx should be in package transactions (0c8699e)
  • move prefixes in package binary to their own file (b905bc7)
  • config.Config was stuttering (f41d335)
  • remove redundant 'Account' in package account's functions (8f6b689)

Code Refactoring

  • package models split into models, transactions (06c5532)
  • integration tests follow aeternity split (c4648ae)
  • cmd follows the new aeternity split (329766b)
  • split aeternity package (3638ebd)
  • split identifiers.go into hashing.go/transactions.go, where they are used (c05d256)
  • standardize on *big.Int being passed everywhere, not big.Int (1311831)
  • move hashing_test.go unittests to their respective locations too (e613f71)
  • break up hashing.go to reduce dependencies. According to Go practice, too much DRY leads to too many dependencies, thus some duplication is allowed. leftPadByteSlice, buildOracleQueryID, buildContractID moved to transactions.go Namehash moved to helpers.go randomBytes duplicated in generateCommitmentID and moved to keystore.go:KeystoreSeal uuidV4 moved to keystore.go generateCommitmentID/computeCommitmentID moved to helpers.go buildRLPMessage, buildIDTag, readIDTag moved to transactions.go (5188c43)

Config

  • we shouldn't need utils.Int outside of swagguard (4e24ba3)

Doc

  • README points to code examples instead (1904f0e)
  • made a Context example from the Spend transaction test (d0d5ad1)

Docs

  • ExampleSerialize/DeserializeTx, ExampleGetTransactionType, ExampleSignHashTx, ExampleVerifySignedTx (40e2171)
  • Contract example (54b4da5)
  • doc.go files for each package (e2c56d4)
  • updated api/README.md (b29a4e7)
  • received many problems about setup, added documentation to README (58a63c4)

Feature

  • node v5.0.0-rc4 support, swagger.json rewriting utils updated (0bbef47)
  • compiler v4.0.0-rc5 swagger json, .env also updated (f57b042)
  • compiler v4.0.0-rc5 support. CompileContractForbidden was renamed to CompileContractBadRequest (55abe33)
  • no need to cancel transaction fee size out anymore when calculating the fee (39d115b)
  • accurate tx fee calculation with unittests (ba9403b)
  • swagger.json from node v5.0.0-rc.2 (a8c7955)
  • support node v5.0.0-rc.2 (2df1c10)

v5.1.2 (2019-09-14)

Bug Fixes

  • Compiler's Error models changed slightly - ensuring that they all return the underlying Reason (caf7069)

Feature

  • basic support for compiler v4.0.0-rc4 (152bac5)

v5.1.1 (2019-09-12)

Bug Fixes

  • aepp-sdk-go was importing v1 of itself, causing havoc for module support. Now v5 should be totally standalone. (852dc24)

Chore

  • reenable Contract tests in api_test.go. Using hardcoded fee/GasLimit values - can only be found through trial and error. TODO: improve user experience here! (8732f08)

v5.1.0 (2019-09-11)

Bug Fixes

  • Versions before Lima had inconsistent naming for OracleResponse/OracleRespondTx. Now it is standardized to OracleRespondTx (acbe52c)
  • move away from custom signBroadcast() code for integration tests. Integration tests should look like example code from now on (18547a1)
  • OracleConfig.VMVersion should be uint16, not uint64 (3cb08f7)
  • Context.OracleRegisterTx helper had a named argument abiVersion but it's actually VMVersion (755d779)
  • README.md had wrong example code. Oops. (93e2651)
  • stringer interface also wants a String() method with a non-pointer receiver (ac3533c)
  • PrintGenerationByHeight() was swallowing errors and not printing out transactions in a generation (8a9f619)
  • utils.BigInt.MarshalJSON() should, surprisingly, NOT have a pointer receiver. This allows json.Marshal() to work on it. (ebd8af4)

Chore

  • README was not updated somehow, updating again (1b7c26d)
  • better comments for config, internal functions Examples for Encode/Decode functions (0b6e64b)
  • Tx.Gas renamed to GasLimit. GasPrice moved from Contracts to Config.Client (since it is a constant, used in all tx fee calculations) Cleaned up unused PreclaimFee, ClaimFee, UpdateFee in AENSConfig (4260720)
  • cleaned up outdated CLI docs (922444a)
  • improved comments in some places (f69d9fe)
  • better comments for helpers.go (7344548)
  • ChainPollInterval typo (beab494)
  • updated Contract struct unittest for the new Payable field (314997b)
  • standardize on returning pointers for Transaction structs (b5e6c1c)
  • use consts in config for some config parameters (2d85818)
  • update .env to node v5 rc1, compiler v4-rc2 (a4902a4)
  • update .env to lima/compiler v4 rc1 (9bd8065)
  • use more reference-quality BlindAuth smart contract for golden smart contracts package, use it in GA integration test (18c973c)
  • finish integration test coverage for compiler swagger interface (811756c)
  • contracts and their bytecodes and calldata were getting too much to manage so introduced a 'golden' package to store them all. Only useful for code which just needs some contract artifact but won't care what it really is. (20b7979)

Cleanup

  • newly calculated dependencies, tidied up struct tags in config.go (27c28a2)

Code Refactoring

  • Replaced Helpers with closures for GetTTL, GetNextNonce, GetAnythingByName. standardizing referring to *aeternity.Node as 'node' better comments for helpers.go (3c1ad87)
  • BroadcastTransaction removed - it was only used in the CLI chain broadcast subcommand, and when used for other code, recalculates the hash needlessly. hashing.go hash() renamed to Blake2bHash() (7bf70e4)
  • integration tests use gotest.tools/golden so that compiler tests can easily update values. Support Lima AEVM/FATE option. (8618d52)
  • removing golden package that was shared between package cmd and integration_test, because infrastructure was too complex for the benefit it provided. cmd and integration_test will have their own golden contract variables, in separate files. Tests will show if these are out of date for the compiler. (490e19f)
  • aeternity.Config.Compiler struct. Introduced configuration consts for several parameters. (6f08984)
  • SignBroadcast() is useful enough that it should be a helper, as SignBroadcastTransaction() WaitForTransactionUntilHeight() required wrapping code, but WaitForTransactionForXBlocks() is more useful (eda4f69)

Feature

  • SignBroadcastWaitTransaction() (733cde4)
  • Contract struct supports Lima RLP serialization (df1249b)
  • support for compiler v4's FATE/AEVM backend switch (0c263d3)
  • compiler 4.0.0-rc1 support (4cb9265)

v5.0.0 (2019-08-13)

Bug Fixes

  • GAMetaTx.Tx only accepts a *SignedTx, not just any Transaction (interface) (b5ebe72)
  • now that rlpae deserializes big.Int(0) from 0x00 more correctly, the Equal method on the Tx struct is unnecessary (b622992)
  • Tx struct JSON() method did not serialize big.Ints properly, so they were always coming out as 0 (a19900f)
  • Config.Client.Contracts.VMVersion updated for node v3 (de87f33)
  • working unittest for Contract struct, no need for embedded contract struct, comments (7bad2d2)
  • BroadcastTransaction shouldn't ignore returned errors anymore (aab5748)
  • update Sophia contract in integration test (f893b51)
  • Sophia 3.2 needed changes to the 'should compile' test contract (ecf96d3)
  • SpendTx Payload should actually be a bytearray (361aea5)
  • BigInt implements the MarshalJSON() interface, fixing JSON serialization of the tx structs (8d2bcb3)

Chore

  • update go module version to v5 (e29afb3)
  • update README.md for refactored Tx signing (46c899c)
  • fix misspelt words (443fcb5)
  • cleanup SpendTx code, better name for embedded spendrlp struct (46be029)
  • comments for SignedTx struct (0abf617)
  • rename transaction RLP unittests to EncodeRLP (823f14b)
  • update README.md for refactored code (a9af711)
  • another unittest for GAAttachTx (de102db)
  • move compiler-url option in CLI to root command to be next to --external-api (b15da47)
  • comment for aeternity.GetHeightAccounter (1908df4)
  • Unit tests for most datatypes in CLI inspect subcommand. refactor: break CLI inspect subcommand down so it is unit testable. (578e69b)
  • use node v3.3.0, compiler v3.2.0 (abc1ae7)
  • api.go wrap to 80 chars (a575059)
  • comments for Node{} individual interfaces (a6f7f54)
  • remove var names from aeternity.NodeInterface (54ac957)
  • setupNetwork() in integration_test should accept a bool argument for debug (7d2db5f)
  • update README.md with how to use the Node/Context (593494e)
  • spend_test should use WaitForTransactionUntilHeight() to check for transaction parsing issues (ce86e49)
  • update tested node version to v3.3.0 (c66c1ee)

Code Refactoring

  • GAAttachTx DecodeRLP support (e1b8f97)
  • All this refactoring has happened to enable CLI account sign to work in this way (4f39e9c)
  • SignedTx deserialization possible + unittest (56ed4ac)
  • Contract Txs implement DecodeRLP() (9b0c0dd)
  • Oracle Txs implement DecodeRLP() (01fc623)
  • DecodeRLP for NameTransferTx, ReadRLP() methods that simplify error handling when ID Tag reading introduced. Consistency everywhere within tx_aens.go, tx_aens_test.go. TODO: POST JSON to debug endpoints within Tx unittests (21fbb64)
  • AENS Tx structs except NameUpdateTx have DecodeRLP() (3359273)
  • TransactionTypes hashmap between ObjectTag identifiers and Tx structs; DeserializeTx(), GetTransactionType(), Transaction interface (6d720ca)
  • break out Tx structs into their own files (1b08e52)
  • SpendTx struct deserialization (b5c3812)
  • readIDTag() introduced (ca758c9)
  • remove old transaction signing code in favour of the SignedTx struct (f84f224)
  • change transaction signing to use the SignedTx{} struct (6e4e2f5)
  • initial SignedTx{} struct (9848314)
  • comments for GA Integration test (not working) (d80cba6)
  • simplified GA integration test contract (f976269)
  • Tx structs implement rlp.Encoder interface instead of custom RLP() method (b0289e0)
  • rename BaseEncodeTx() to SerializeTx() (c872a19)
  • aeternity.NewContextFromURL(url, address) is introduced. Because it creates Helpers within itself, it hinders mocking and thus is not suited for use within the SDK. SDK level code should create the aeternity.Context{} struct directly without a constructor. As SDK code constructs the Context{} struct directly, it is now independent from the interface that it presents to the SDK using code (NewContextFromURL) (58dc332)
  • api_test no need for a new Context for AENS, Oracle, and Spend type transactions! (801e206)
  • integration tests use Helper{} struct instead of passing the node client directly to Context{} (0f03064)
  • tx spend/contract subcommand unittests should rely on HelperInterface, not API Interfaces. Also, fixed tx spend issue where it was printing what you wanted, instead of the actual tx's parameters (a4faff0)
  • removing Node from Context. Context helper methods only depend on the Helpers. This makes testing much easier (for the CLI mocks) (b31e6b8)
  • split out helper functions into 'Helpers' struct (6de6315)
  • move CLI unittest mock structs to one file for manageability (411d668)
  • helpers GetTTL(), GetNextNonce(), GetTTLNonce() are now vars so you can mock them out with other anonymous functions (2a3cbd0)
  • CLI tx contract deploy unittest does not depend on network connection (f7c38f6)
  • CLI contract subcommand unittests now offline/online (1852973)
  • package cmd move test helper functions into separate test_utils.go (317367d)
  • compiler.go interfaces for each method (bd6fcc2)
  • CLI tx spend unittest no longer needs a network connection (e36bc54)
  • CLI account unittests do not need network anymore (9049f6c)
  • New pattern in chain, chain_test.go: online/offline tests update comment because newAeNode() and newCompiler() are no longer vars (e8d589b)
  • interfaces on every method of the Node{} struct make it possible to granularly mock it out in cmd (371eeb4)
  • moved terminal.go from aeternity/ to cmd/, getErrorReason() was only used by api.go so moved there instead (c769bc0)

Feature

  • GAMetaTx works, integration test checks with a SpendTx GAMetaTx.EncodeRLP(): serialize the wrapped SignedTx into a plain bytearray before including it in the RLP GAMetaTx.GaID: this should be an AccountID (45007df)
  • SignHashTx() detects if it is a GAMetaTx and if so makes the SignedTx with no signatures instead (a384743)
  • GAMetaTx DecodeRLP() support (untested). NewGAMetaTx() now wraps the Tx in an empty SignedTx for you (1c18110)
  • NamePreclaimTx DecodeRLP() and unittest (c4dfeba)
  • GAMetaTx initial struct (43cef35)
  • oracle integration test is now idempotent (a613619)
  • integration test funding function to make tests idempotent (c1f99d8)
  • initial Generalized Accounts integration test (bd30589)
  • GAAttachTx with working RLP serialization (2cd3552)
  • Contract struct parses cb_ contracts and gives relevant details (52f8332)
  • preliminary GAAttachTx (6da7312)
  • NewContextFromURL() accepts a debug parameter (23b62a1)
  • Helper{} functions to lookup Accounts, Oracles, Contracts, Channels with AENS (b00ea77)
  • CLI AENS lookup (d9d5eaf)
  • helper function to look up a Name's account_pubkey Pointer (680f502)
  • CLI contract generateaci command with unittest. Output format could be improved (70ba5f4)
  • NewSpendTx() ensures only valid UTF-8 is used as the SpendTx payload (41fb8d4)
  • Context.SpendTx helper, NewContext() constructor (0275d3c)

v4.0.1 (2019-07-05)

Bug Fixes

  • version: update the module with semantic import versioning (1d5621c)

v4.0.0 (2019-07-03)

Bug Fixes

  • renamed swagguard tests to differentiate between node and compiler swagger code (5793b1f)
  • NameRevoke doesn't need an Address (799bb71)
  • CLI chain top was crashing when printing time because node v3.0.1 defines time now as Uint64, not int64 (23cf1c0)
  • contracts, oracle integration tests did not get their model types updated (5710128)

Chore

  • proper comments for Compiler endpoints (5c1a91e)
  • CLI contract subcommand tests for encodeCalldata, compile (5955bc4)
  • Golang - unlike %#v, %+v doesn't print integers in hex (11f8af3)
  • Client{} method unittests against testnet WIP (95b57d6)

Code Refactoring

  • break logic/network part of some chain subcommands out, so that the network can be mocked out (d4be4d6)
  • many helper structs were redundant. Now they are all reduced down to Context{}, which stores only a Node connection and Address on which to query the nonce. Signing is to be done totally separately, the helpers only create unsigned txs (62a7590)
  • Client{} helper struct renamed to Node. So, Node is a connection to a node. Compiler is a connection to a compiler. (568853e)
  • Contract{} helper struct does not need to know the Account. It just needs a ak_ public key. In fact many helper structs should be refactored this way in the future. (1a4cb39)
  • move node swagger generated code into swagguard/node (2e644fd)
  • Client API tests moved to integrationtest package, tested node version bumped to v3.1.0 (428343e)
  • EncodedHash, EncodedPubkey, EncodedValue, EncodedByteArray -> string (0d365f8)
  • UInt16, UInt32, UInt64 -> type: integer, format: uint* (6d3bd5c)
  • urlComponents() does not belong in helpers. It is a function used only once in node.go Comments for Contract* structs and constructors (7e4286e)
  • API refactoring to use more interfaces and be unit testable Client{} is now a struct that has methods that correspond directly to the node's endpoints helpers.go helper functions that implement useful business logic like GetTTLNonce, WaitForTransactionUntilHeight, BroadcastTransaction etc. now take an interface instead of being attached to Client{}, making them testable. Unittest for WaitForTransactionUntilHeight() AENS/Contract/Oracle helpers stay as they are. Not much testing needed there since they only use GetTTLNonce. (25ef16e)
  • Client{} API* methods renamed to not have an API prefix. See Dave Cheney's advice on naming (6610ae8)

Feature

  • CLI contract decodeCalldata subcommand, tx deploy subcommand and integrationtest (fails because alice does not exist on mainnet) refactor: argument validation moved into IsAddress(), IsBytecode(), IsTransaction() (fe8c046)
  • CLI contract encode(Calldata) subcommand (b6f00e1)
  • CLI contract compile subcommand with --compiler-url option (ae0891b)
  • preliminary support for compiler's HTTP endpoints. Contract{} helper struct gets a *Compiler attribute (0bdf629)
  • compiler v3.1.0 swagger spec and generated code (e98eb32)

Rlp

  • use own fork of go-ethereum rlp. Remove rlp/ from aepp-sdk-go repo. (96ddd4a)

v3.0.0 (2019-06-06)

Bug Fixes

  • Error.Reason dereferencing and generic_tx deserialization (9988115)
  • tx verify unittest was failing (6dccb3c)
  • FeeEstimate should be less brittle by not looking for a specific value (ff7e74f)
  • oracle integration test was brittle when it queried the node too quickly for OracleRespondTx stage (90ed1a2)
  • forgot to update OracleRegisterTx ABIVersion in a unittest (1079858)
  • oracle integration test could be brittle because it didn't wait after the OracleRegisterTx to query the node by oraclepubkey (77c4e20)

Chore

  • big.Int constructor rename NewBigIntFromString -> NewIntFromString RequireBigIntFromString -> RequireIntFromString NewBigIntFromUint64 -> NewIntFromUint64 (0846805)
  • BigInt's own Cmp() simplifies code in LargerThanComparisons() (5c356e4)
  • cleanup utils, cmd was the only package using it (21f6e2f)
  • better comment for UnmarshalJSON (2d86bb3)
  • better names for 'utils' (c4186c2)

Code Refactoring

  • BigInt newtype has a working Set(), allowing UnmarshalJSON() to work properly (6ef4866)
  • terminal printIf() recognizes big.Int and prints accordingly (54fce99)
  • transaction structs now cast to utils.BigInt whenever necessary (df11145)
  • utils.BigInt is now just a type aliased big.Int (62768a9)
  • integration tests cleaned up with closures and test setup functions. More robust because it waits longer in delayableCode (b3dc468)
  • setupNetwork(), setupAccounts(), usage of t.Log(), go-ish variable naming. Includes Spend Transaction Integration Test (f8951c1)
  • BigInt LargerThanZero functions return a bool, not an error (454d0a7)

Feature

  • update .env for v3.0.1 integration test docker image (1c0ffdc)
  • tx structs, unittests, helpers, config, api updated to support v3.0.1 types (e90ecfc)
  • go-swagger v3.0.1 generated code (63844f9)
  • aeternity node v3.0.1 swagger.json (2bd3ca0)

v2.2.0 (2019-05-27)

Bug Fixes

  • tx verify was using blank env variable as a default instead of the built in default. TX verification works now (2106cae)
  • cmd: tx spend queries node for Nonce if not specified. also accepts text payload (b2879fb)
  • CLI --json flag now works (911392d)
  • terminal pretty printer also prints BigInt's value/amount (3f239a1)
  • calcFeeContract wasn't paying attention to the base gas multiplier (934ef00)
  • swagger.json get_generation_by_height should be uint64 (manual fix) (a5b5a87)
  • make no_implicit_int64() filter print out what it did (efdb963)
  • generated.models.Error is patched to satisfy the Error interface. This dereferences the error.Reason pointer if the models.Error is passed as a pointer (5806eb9)
  • unittest for GenericTx deserialization (d293f30)
  • GenericTx was not deserializing properly into go-swagger models. generated code was not parsing node responses that involved GenericTx. First fixed in 2cccbeaefd49e8a037af5b4b2029d697477e683b but resurfaced after regenerating from new swagger.json make go-swagger generated *Tx models return SpendTx, not SpendTxJSON closes #54 (4716a8e)
  • canonical NameUpdateTx RLP serialization seems to want NamePointers in the reverse order than specified in the JSON. (f2bc093)

Chore

  • break integration tests up, make AENS test use random names (571c9c2)
  • Transactions tests should test with fixed values and Config Defaults (3686578)
  • AENS integration test now includes NameTransfer, NameRevoke (7f1c37b)
  • NameUpdateTx unittest with 4 pointers, just in case ordering issues pop up (14fa242)
  • another python tool to quickly edit _tx_json.go files (2794c74)
  • improved tools to rewrite swagger.json (ed9e6bd)
  • standardize field names across transactions (07aa8a7)
  • cleanup - comments and casing (3169ca7)
  • Oracle Integration Test, OracleRegister, OracleExtend (df5bef7)
  • small unittest to test that generated models.Error has its Reason automatically dereferenced when printing it (1f0df4d)
  • cleanup obsolete code (ef86705)
  • AENS integration test generalize to name as a variable, do not use stdin n as prompt to continue. use aeternity helpers instead (cb5e252)
  • AENS workflow integration test (db9ad5c)
  • test genesis account is now richer in private testnet for integration tests (897e78b)

Code Refactoring

  • separate AENS/Oracle/Contract helpers from aeternity node HTTP client. Also renamed them. Now, 1 helper = 1 account, and they can share the same http client instance (2174b08)
  • renaming to prepare for Client/Helper change (ac47d04)
  • no need for SpendTxnormal vs SpendTxLarge anymore (0fe777e)
  • ContractConfig - Amount added, Gas/GasPrice as BigInt (3ab86f5)
  • Contract transactions now use utils.BigInt for Gas (61df44d)
  • Gas, GasPrice now in utils.BigInt instead of uint64. updatedict.py changed to do this too. edit.py no longer used, dropping. (bd5e5a6)
  • fee estimation (b6f1054)
  • rename TxTTL, TxFee back to Fee, TTL so that all Txs have a standard name. This might be useful for interfaces later (1aa0418)
  • Config includes BaseGas, GasPerByte, GasPrice for all Transaction types, not just Oracle/Contract (890267e)
  • Tx interface does not include JSON() method. This was more trouble than it was worth (5d59dca)
  • NamePointer struct now embeds models.NamePointer. This gives automatic JSON serialization (4729a9e)
  • NamePointer is now a struct of its own (a2de13a)

Docs

  • TODO consider refactoring WaitForTransactionUntilHeight (03af1ab)
  • added comment for NamePointer.EncodeRLP() (0788935)
  • add minor comments on exported functions (df01f3e)

Feature

  • Fee estimation for SpendTx, AENS Txs, and Contract Txs (225da65)

Features

  • helpers for Contract transactions (92a1ed8)
  • prototype Contract Integration Test (07cb5df)
  • Contract Call Tx works (ac88116)
  • APIGetContractByID (needed for integration test) (1bf0497)
  • Contract ID attached to ContractCreateTx struct, encodeVMABI function and unittests, ContractCreateTx unittests test common VM/ABI combinations (9bf402a)
  • calculate contract ID (a072966)
  • Fee Estimation for SpendTx, Name*Tx (8cff1a8)
  • ContractCallTx, not working yet (bb74df6)
  • ContractCreateTx works (74ac97a)
  • add the aesophia compiler image to the docker-compose (d58baa2)
  • generated code for v2.4.0 swagger.json (6e79cf2)
  • support aeternity v2.4.0 node (5b0f04f)
  • helper functions for NameTransferTx, NameRevokeTx (4f5ba90)
  • NameRevokeTx, NameTransferTx and their unittests (1c9eb4e)
  • OracleRespondTx integration test (aa9a742)
  • OracleRespondTx struct, RLP() and JSON() serialization and unittests (4fd8171)
  • OracleRespondTx prerequisites: APIGetOracleQueriesByPubkey(), buildOracleQueryID(), leftPadByteSlice() and unittests (db05b75)
  • OracleQueryTx works. Unittest reference value taken from node, not JS SDK. Integration test updated. (24f5f87)
  • Oracle helper functions for OracleRegisterTx, OracleExtendTx (0964c8c)
  • account address will ask for confirmation before printing private key (5de88b5)
  • vanity account search takes regular expressions that can match anywhere (e119c1d)
  • AENS integration test now tests NamePreclaim, NameClaim, NameUpdate for simple ak_ type pointers (d675cf2)

Test

  • Contracts Integration Test, working (309363d)
  • TestContractCallTx_FeeEstimate makes sure that the fee estimate is working properly (d750d14)

v2.1.0 (2019-04-26)

Bug Fixes

  • generated.models.Error is patched to satisfy the Error interface. This dereferences the error.Reason pointer if the models.Error is passed as a pointer (14ce6ed)
  • unittest for GenericTx deserialization (1c17e40)
  • GenericTx was not deserializing properly into go-swagger models. generated code was not parsing node responses that involved GenericTx. First fixed in 2cccbeaefd49e8a037af5b4b2029d697477e683b but resurfaced after regenerating from new swagger.json make go-swagger generated *Tx models return SpendTx, not SpendTxJSON closes #54 (b2b9cd5)
  • canonical NameUpdateTx RLP serialization seems to want NamePointers in the reverse order than specified in the JSON. (cc6a56e)

Chore

  • standardize field names across transactions (aaca2e5)
  • cleanup - comments and casing (21b68d9)
  • Oracle Integration Test, OracleRegister, OracleExtend (46a4192)
  • small unittest to test that generated models.Error has its Reason automatically dereferenced when printing it (839c5b2)
  • cleanup obsolete code (053837c)
  • AENS integration test generalize to name as a variable, do not use stdin n as prompt to continue. use aeternity helpers instead (ffc4f8a)
  • AENS workflow integration test (152947c)
  • test genesis account is now richer in private testnet for integration tests (91dff09)

Code Refactoring

  • Tx interface does not include JSON() method. This was more trouble than it was worth (f79c27b)
  • NamePointer struct now embeds models.NamePointer. This gives automatic JSON serialization (ccff0a6)
  • NamePointer is now a struct of its own (9bd57e9)

Docs

  • TODO consider refactoring WaitForTransactionUntilHeight (b8a4f0c)
  • added comment for NamePointer.EncodeRLP() (72e28be)
  • add minor comments on exported functions (8eb5d88)

Features

  • OracleRespondTx integration test (d7c5696)
  • OracleRespondTx struct, RLP() and JSON() serialization and unittests (680262a)
  • OracleRespondTx prerequisites: APIGetOracleQueriesByPubkey(), buildOracleQueryID(), leftPadByteSlice() and unittests (c656fb4)
  • OracleQueryTx works. Unittest reference value taken from node, not JS SDK. Integration test updated. (346f8f3)
  • Oracle helper functions for OracleRegisterTx, OracleExtendTx (73f908c)
  • account address will ask for confirmation before printing private key (cb80311)
  • vanity account search takes regular expressions that can match anywhere (9612610)
  • AENS integration test now tests NamePreclaim, NameClaim, NameUpdate for simple ak_ type pointers (f31085e)

v2.0.0 (2019-04-09)

Bug Fixes

  • NameClaimTx salt 256bit bytearray was being converted to uint64 and back, which mangles the bytes. Solved by making it a BigInt, which has proper 32 byte big endian representation with Bytes() (45ff92d)
  • disabled OracleQueryTx, aepp-sdk-js reference RLP serialization is more reliable than aepp-sdk-python atm (88e7ac4)
  • Aens.NameClaimTx helper should pass the plaintext name down to the actual function (c976216)
  • NameClaimTx correct serialization in JSON and RLP formats (0e6799d)
  • AENS.UpdateFee specified, made into a BigInt (de42965)
  • integration test was broken after BigInt.Int was changed from copy-by-value to pointer, because swagger did not know it had to initialize BigInt.Int when creating a BigInt. Fixed. (b9dd2f3)
  • OracleQueryTx.RLP() was not correct, renamed members of OracleRespondTx (b679804)
  • OracleExtendTx.RLP() use t.Fee.Int instead of t.Fee.Bytes() for RLP serialization (857338f)
  • integration test now works with BigInt's pointer receivers (d373565)
  • tx command shouldn't use BaseEncodeTx() as a returned function (21c5a7c)
  • SpendTx, OracleRegisterTx RLP() methods should always use utils.BigInt.Int while serializing, not the utils.BigInt directly, because otherwise there will be a list within a list (fcaa28d)
  • rlp Encode() was encoding 0 value of uint64 as 0x00, but big.Int 0 value as 0x80. Changed big.Int 0 value to 0x00 (e21c6f5)
  • Ae.WithAccount() was not copying the Account object to the Oracle struct (ef9eab6)
  • renamed helper function arguments to accomodate different kinds of TTLs in other transaction types (5697537)
  • rearranged function arguments and correct param types in OracleRegisterTx() (2b00541)
  • uint64/utils.BigInt instead of int64 for certain variables in config.go (4c76f06)

Chore

  • separate salt generation from calculating the commitmentId, so we can unittest commitmentId generation against GET /v2/debug/names/commitment-id (4881ad9)
  • tx dumpraw unittest (cef5b99)
  • unittests for OracleExtendTx (c6ca727)
  • release: 2.0.0 (7852cf0)

Cleanup

  • deleted handwritten unittests, use new generated ones. More unittests that reliably check for RLP serialization. getRLPSerialized() is a convenience function that quickly gives you the RLP deserialized representation (fb9dc82)
  • transaction unittest should not be in helpers, whose role needs to be redefined anyway. New OracleRegisterTx unittest (b5230e6)
  • helpers_test.go should use new BigInt constructor methods (1869bc7)
  • fix minor typo in node.go (7cd0bd5)

Code Refactoring

  • helper functions now return the Tx structs, which then need to be separately base64 encoded. However, TTL and Nonce are automatically determined, because that was just tedious (40fa167)
  • Namehash() exported because it is useful when you need to debug AENS (d4ac51d)
  • AENS Tx fees should be denominated in BigInt (db198cf)
  • transactions_test does not have to be an aeternity_test package - this creates more problems for now. Leave aeternity_test to code that tests the user convenience stuff above this level (9b0cc65)
  • utils.BigInt should embed a *big.Int after all, not a big.Int. Also, its methods should have pointer receivers, not value receivers. This lets us use big.Int's methods, since they are defined on the pointer see https://stackoverflow.com/questions/55337900/marshaljson-a-type-with-an-embedded-type-ends-up-as-instead-of-the-value/55338067[#55338067](https://github.com/aeternity/aepp-sdk-go/issues/55338067) (218578a)
  • integration test uses new Tx struct method (b9dcdc1)
  • Tx struct methods now use a pointer receiver Also cleaned up unittests (fe513d8)
  • Tx structs should have exported fields (42d94ac)
  • BaseEncodeTx() doesn't need to return a function - it can just convert within itself (533ae43)
  • many helper functions not needed anymore. Commenting out to focus on other issues (69bef33)
  • cmd/tx.go uses new refactored SpendTx struct (f48377d)
  • made Transaction functions Go-ish, with structs and interfaces. More unittests, but some failing due to big.Int 0-value serialization issue (99ca385)
  • DecodeRLPMessage() exported. Now we can have deep debugging functions from the cmd package, for example (31de960)
  • BroadcastTransaction() helper becomes part of Ae struct, so aeClient.BroadcastTransaction() (1f1652c)
  • Ae.GetTTL/Nonce() is for SDK user convenience - under the hood, they use unexported normal functions getTTL/getNonce() (7cd8679)

Docs

  • show how to use the SDK (7895e74)
  • comments for JSON() methods (d1a5f64)
  • explain the TTL types in AENS (9265779)

Feature

  • fleshing out NameUpdateTx, especially the JSON and Pointers overhaul. buildPointers is completely different now. Still does not work 100% (6d460af)

Features

  • account vanity generator chore: chain broadcast unittest (3b5c5bd)
  • OracleQueryTx struct revision, unittest structure (but no working test) (41f9821)
  • OracleQueryTx, OracleRespondTx structs (be508b1)
  • AENS transactions in new struct format, given JSON() methods, some types fixed. Tx interface now includes the JSON() method (edabb99)
  • Tx structs now feature a JSON() serialization that uses swagger models (944daa7)
  • CLI tx dumpraw command (helps with debugging) (05516cd)
  • OracleRegisterTxStr() helper function (a654936)
  • OracleRegisterTx, OracleExtendTx. Incomplete unittest (f41a021)

Style

  • rename nodeCli to nodeClient - less confusing (f1aaf15)

v1.0.2 (2019-03-20)

AENS

  • fees and salts are now uint64 (09c2ea4)

Aeternity

  • Base58/64 Encode/Decode functions now exported (4a17065)

Aeternity_test

  • TestSpendTransactionWithNode integration test (084e9f3)

Api

  • added design comment on Ae.API*() methods (5762cbf)

Bug Fixes

  • renamed helper function arguments to accomodate different kinds of TTLs in other transaction types (2970997)
  • rearranged function arguments and correct param types in OracleRegisterTx() (7c47342)
  • uint64/utils.BigInt instead of int64 for certain variables in config.go (1c65c9a)

Chain

  • added ttl and networkid command (a25c0a9)

Chore

  • helpers_test.go should use new BigInt constructor methods (a0325fc)
  • fix minor typo in node.go (5b80101)

Cmd

  • tx spend better help message for --nonce (226427e)
  • tx spend accepts ttl, nonce TODO: ACTUALLY IMPLEMENT IT (109f432)
  • removed intermediate nodeExternalURL variable. Now the single source of truth for Node URL and NetworkID is aeternity.Config.Epoch. Until helper functions accept these via arguments, this allows dependent code to change Node URL and NetworkID as well without worrying that it might be touched elsewhere. (a340ec1)
  • amount, fee are now always processed as uint64 (4520db9)
  • account balance unittest for when an account was found, and not found. Need to rework terminal.go to unwrap model.Error messages properly (5ba5fba)
  • tx spend unittest reenable (c939931)
  • inspect unittest and error object (d52eb1e)
  • account unittests use t.Error() instead of t.Fatal, renamed Test*() functions (84719cd)
  • chain use error return objects (5093af2)
  • tx unittests (failing) (c396532)
  • tx return error objects. Now that Config is hardcoded, I can reference it directly for the --fee argument (bcea426)
  • tx uses named functions now (52c6a10)
  • account subcommands return errors. This helps in testing, and keeps it simple (ccdf565)
  • separated functions from cobra commands, some unittests. --password now belongs to account command, not its subcommands (6bd18f7)
  • inspect unittest (MORE TESTS) (f10e442)
  • chain unittests (721eca4)
  • removed aeCli as a global variable, so each subcommand has to instantiate its own aeCli now. This helps go-vet detect problems where I would otherwise only get nil reference panics because aeCli wasn't initialized yet (321b199)
  • tx broadcast -> chain broadcast (a11a62d)

Code Refactoring

  • BroadcastTransaction() helper becomes part of Ae struct, so aeClient.BroadcastTransaction() (adb1b7f)
  • Ae.GetTTL/Nonce() is for SDK user convenience - under the hood, they use unexported normal functions getTTL/getNonce() (76a0ff6)

Config

  • use sdk-mainnet.aepps.com (68c4ff7)

Features

  • OracleRegisterTxStr() helper function (a178c87)
  • OracleRegisterTx, OracleExtendTx. Incomplete unittest (7c7dbcb)

Generated

Gitignore

  • ignore docker-compose.override.yml (5c23a85)

Helpers

  • GetNextNonce, GetTTL renamed and exported, SpendTransaction->SpendTxStr, signature changed. All helper functions require ttl, nonce as arguments (3eb5e14)
  • TestSpendTransaction (7beb27f)

README

  • single line swagger generation command (944a56c)

Rlp

  • fixing 0 encoding issue (991f2b4)

Style

  • rename nodeCli to nodeClient - less confusing (528eba0)

Swagger

Utils

  • BigInt implements UnmarshalJSON and MarshalJSON. Unittests included for peace of mind, although code does not actually do much. (b6714c8)
  • BigInt now uses big.Int as embedded struct. Validation unittest. (5a4a67b)

0.25.0-0.1.0-alpha (2018-11-22)

0.22.0-0.1.0-alpha (2018-09-19)