# 12/13
## News
* [AjMaChInE](https://github.com/ajblane), [Wayne](https://github.com/wusyong) will join tangle-accelerator implementation!
## Progress
### Fix building errors: Compatible with Bazel 0.2.0
[Bazel](https://en.wikipedia.org/wiki/Bazel_(software)) is a build system developed by Google.
Building errors occur after updating Bazel to 0.2.0:
```
Deprecated. load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") for a drop-in replacement.
```
### Complete JSON Serialization test
Use [Unity](http://www.throwtheswitch.org/unity/) for unit test
[source code](https://github.com/jkrvivian/tangle-accelerator/blob/master/serializer/test/test_serializer.c)
* `test_deserialize_ta_get_tips`
* `test_serialize_ta_get_tips`
* `test_serialize_ta_generate_address`
* `test_deserialize_ta_send_transfer`
* `test_serialize_ta_send_transfer`
### Implement `insert_to_trytes` and test
insert trytes into transaction raw trytes, see [transaction raw trytes](#Transaction-raw-trytes) and [transaction tryte offset](#IOTA-transaction-tryte-offset)
### [WIP] Implement `send_transfer` Flow
[source code](https://github.com/jkrvivian/entangled/blob/test_cclient/cclient/test_api/send_transfer_test.c)
* [x] Generate new address
* [x] Make transaction
* [x] Set address
* [x] Set tag
* [x] Set message
* [x] Set value
* [ ] Make bundle
* [x] Add transaction
* [ ] Finalize
* [x] calculate bundle hash
* [ ] Fill bundle hash through txs
* pyota will fill in bundle hash in `finalize`
* ==use `transfer`, not `bundle`==
* [ ] ==TODO==:signature
* [x] getTransactionToApprove
* [x] get transaction trytes
* `transaction_sesrialize_to_flex_trits`
* [x] Fill in trunk, branch in each transaction
* [x] Fill in timestamp in each transaction
* [ ] PoW with dcurl
* [ ] fill in nonce
* [ ] broadcast transaction
### IOTA transaction tryte offset
offset is defined in [iotaledger/iri](https://github.com/iotaledger/iri)
| offset|start|len|
|:--|:--|:--|
|ADDRESS_TRINARY_OFFSET|6561|243|
|VALUE_TRINARY_OFFSET|6804|81|
|OBSOLETE_TAG_TRINARY_OFFSET|6885|81|
|TIMESTAMP_TRINARY_OFFSET|6966|27|
|CURRENT_INDEX_TRINARY_OFFSET|6993|27|
|LAST_INDEX_TRINARY_OFFSET|7020|27|
|BUNDLE_TRINARY_OFFSET|7047|243|
|TRUNK_TRANSACTION_TRINARY_OFFSET|7290 (2430 tryte)|243|
|BRANCH_TRANSACTION_TRINARY_OFFSET|7533 (2511 tryte)|243|
|TAG_TRINARY_OFFSET|7776|81|
|ATTACHMENT_TIMESTAMP_<br>TRINARY_OFFSET|7857 (2619 tryte)|27|
|ATTACHMENT_TIMESTAMP_<br>LOWER_BOUND_TRINARY_OFFSET|7884|27|
|ATTACHMENT_TIMESTAMP_<br>UPPER_BOUND_TRINARY_OFFSET|7911 (2637 tryte)|27|
|NONCE_TRINARY_OFFSET|7938 (2646 tryte)|81|
### Transaction raw trytes
transaction raw trytes is a trytes string of all information of a transaction
#### pyota:
```python
def as_tryte_string(self):
# type: () -> TransactionTrytes
"""
Returns a TryteString representation of the transaction.
"""
return TransactionTrytes(
self.signature_message_fragment
+ self.address.address
+ self.value_as_trytes
+ self.legacy_tag
+ self.timestamp_as_trytes
+ self.current_index_as_trytes
+ self.last_index_as_trytes
+ self.bundle_hash
+ self.trunk_transaction_hash
+ self.branch_transaction_hash
+ self.tag
+ self.attachment_timestamp_as_trytes
+ self.attachment_timestamp_lower_bound_as_trytes
+ self.attachment_timestamp_upper_bound_as_trytes
+ self.nonce
)
```
## TODO
* Implement `send_transfer`
* [dcurl](https://github.com/DLTcollab/dcurl)
* signature
* reference: [AjMaChInE/IOTA_SEED_RELATED_API](https://github.com/ajblane/IOTA_SEED_RELATED_API)
* Write building instructions and develop guide in README
* List TODO or enhancement items for