Bitshares Transaction process flow

Oops , looks toooooo big.

            cli_wallet                                  Full Node                                        itself or other P2P node

                                                                                          
                                                                                          evaluator::
                                                                                              apply()    -> SPECIFIED_EVALUATOR::do_apply()

                                                                                                ^                                              
                                                                                                |
                                                                                                
                                                                                          evaluator::
                                                                                              evaluate() -> SPECIFIED_EVALUATOR::do_evaluate()

                                                                                                ^                                              
                                                                                                |
                                                                                                
                                                                                          generic_evaluator::
                                                                                              start_evaluate()

                                                                                                ^                                              
                                                                                                |
                                                                                                
                                                                                          op_evaluator_impl<T>::
                                                                                              evaluate()

                                                                                                ^                                              
                                                                                                |
                                                                                                                                               
     wallet_api_impl::                                                                    database::
         sign_transaction()                                                                   apply_operation()

                |                                                                               ^                                              
                v                                                                               |
                                                                                                
     api<network_broadcast_api>::    ------->    network_broadcast_api::                  database::                                                       
         broadcast_transaction()                     broadcast_transaction()                  _apply_transatcion()

                                                           |                                    ^                                              
                                                           v                                    |
                                                                                                
                                                 database::                   ------->    database::
                                                     push_transaction()                       push_transaction()
                                                                                                                                               
                                                          |                                     ^                                              
                                             +------------|-------------------------------------|-------------------------------------+
                                             |            v                                     |                                     |
                                             |   node::                       ---+        application_impl::                          |
                                             |       broadcast_transaction()     |            handle_transaction()                    |
                                             |                                   |              ^                                     |    
                              P2P Layer      |                                   |              |                                     |    
                                             |                                   |                                                    |    
                                             |                                   +--->    node_impl::                                 |
                                             |                                                process_ordinary_message()              |
                                             |                                                                                        |
                                             +----------------------------------------------------------------------------------------+


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容